Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача массива Оракловской процедуре 
V
    Опции темы
AleksandraN
Дата 23.11.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 11.8.2009
Где: Пермь

Репутация: нет
Всего: нет



Каким образом можно передать массив оракловской процедуре( функции)?
Делаю по образцу...в образце работает, у меня нет...
Код

procedure TfrmTabVarFillValue.btnOKClick(Sender: TObject);
var

  Str : TPLSQLTable;
  packApTESTest: TApTESTest;
  AOwner : TComponent;

begin
  AOwner:= nil;
  packApTESTest:= TApTESTest.Create(AOwner);
  packApTESTest.Name:= 'packApTESTest';
  packApTESTest.Session:= DM.DB;

  packApTESTest.Test_1(Str);

  Close;
end;



- это процедура, описанная в отдельном юните:
Код

function TApTESTest.Test_1( Str: TPLSQLTable): integer;
begin
  Str := TPLSQLTable.Create(DefaultPLSQLTableSize, 0);
  try
    GetQuery;
    OCPQuery.DeclareVariable('function_result', otFloat);
    OCPQuery.DeclareVariable('param1', otFloat);
    OCPQuery.DimPLSQLTable('param1', Str.TableSize, Str.StringSize);
    OCPQuery.SQL.Add('begin');
    OCPQuery.SQL.Add(' :function_result := "TEST_TEST"."Test_1"(');
    OCPQuery.SQL.Add('    param1 => :param1);');
    OCPQuery.SQL.Add('end;');
    OCPQuery.Execute;
    Result := ConvertVariant(OCPQuery.GetVariable('function_result'));
  except
    Str.Free;
    raise;
  end;
end;




Заранее, большое спасибо)
PM MAIL   Вверх
AleksandraN
Дата 23.11.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 11.8.2009
Где: Пермь

Репутация: нет
Всего: нет



да,  использую DOA.
PM MAIL   Вверх
AleksandraN
Дата 24.11.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 11.8.2009
Где: Пермь

Репутация: нет
Всего: нет



Что? Никто с подобным не сталкивался? 
Почитала документацию DOA , но что-то понятней от этого не стало...буду очень признательна, если кто-нибудь все-таки откликнется!
PM MAIL   Вверх
AleksandraN
Дата 24.11.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 11.8.2009
Где: Пермь

Репутация: нет
Всего: нет



Если кому-то интересно, то конечный вариант таков:

Код

procedure TfrmTabVarFillValue.btnOKClick(Sender: TObject);
var

  Table        : Variant;
  packApTESTest: TApTESTest;
  AOwner       : TComponent;
  i, j         : Integer;
  t            : TOracleQuery;
begin
  AOwner := nil;
  t := TOracleQuery.Create(AOwner);
  t.Session:= DM.DB;
  t.DeclareVariable('function_result', otFloat);
  t.DeclareVariable('param1', otFloat);
  t.SQL.Add('begin');
  t.SQL.Add(' :function_result := TEST_TEST.DVsHistParam(');
  t.SQL.Add('    param1 => :param1);');
  t.SQL.Add('end;');

  DeclareVariable('param1', otFloat);
  DimPLSQLTable('param1', 100, 0);
  j := Length(GridDataValue);
  If j > 0 then begin
     Table := VarArrayCreate([0, j-1], varVariant);
      For i := 0 to j-1 do
        Table[i] := GridDataValue[i].SGN_ID
  end
  else Table := VarArrayCreate([0, j], varVariant);
  t.SetVariable('param1', Table);
  t.Execute;

end;



Это сообщение отредактировал(а) Rrader - 24.11.2009, 17:55
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.