Доброго времени суток.
Подскажите пожалуйста, есть ли возможность в ODAC 8.5.9 передавать ассоциативные массивы в качестве аргументов хранимых процедур Oracle версии 10 или 11 из Delphi Embarcadero 2007 ?
Какую версию ODAC предпочтительнее использовать для данных задач?
Спасибо.
Передача ассоциативных массивов в качестве параметров
-
- Сообщения: 6
- Зарегистрирован: Чт 07 мар 2013 09:41
Re: Передача ассоциативных массивов в качестве параметров
Добрый день,
Ниже приведен простой пример демонстрирующий работу с ассоциативным массивом в качестве IN OUT параметра процедуры
Ниже приведен простой пример демонстрирующий работу с ассоциативным массивом в качестве IN OUT параметра процедуры
Код: Выделить всё
CREATE OR replace PACKAGE pcg_pls_type AS
TYPE PLS_TYPE IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
PROCEDURE sp_fill_pls(A_VAL IN OUT PLS_TYPE);
END;
/
CREATE OR replace PACKAGE BODY pcg_pls_type AS
PROCEDURE sp_fill_pls(A_VAL IN OUT PLS_TYPE) AS
i NUMBER;
BEGIN
FOR i IN 1..a_val.COUNT LOOP
A_VAL(i) := i*10;
END LOOP;
END;
END;
/
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
var
OraSession: TOraSession;
OraStoredProc: TOraStoredProc;
i: integer;
begin
OraSession := TOraSession.Create(nil);
try
OraSession.ConnectString := 'scott/tiger@orcl1020';
OraSession.Connect;
OraStoredProc := TOraStoredProc.Create(nil);
try
OraStoredProc.StoredProcName := 'PCG_PLS_TYPE.SP_FILL_PLS';
OraStoredProc.Prepare;
OraStoredProc.ParamByName('A_VAL').DataType := ftInteger;
OraStoredProc.ParamByName('A_VAL').ParamType := ptOutput;
OraStoredProc.ParamByName('A_VAL').Table := true;
OraStoredProc.ParamByName('A_VAL').Length := 10;
OraStoredProc.Execute;
for i := 1 to 10 do
ShowMessage(IntToStr(OraStoredProc.ParamByName('A_VAL').ItemAsInteger[i]));
finally
OraStoredProc.Free;
end;
finally
OraSession.Free;
end;
end;
-
- Сообщения: 6
- Зарегистрирован: Чт 07 мар 2013 09:41
Re: Передача ассоциативных массивов в качестве параметров
Добрый день,
Пожалуйста, если у Вас возникнут дальнейшие вопросы по ОDAC, пишите нам.
Пожалуйста, если у Вас возникнут дальнейшие вопросы по ОDAC, пишите нам.