У меня есть StoredProcedure в Oracle с параметром In и нашим параметром (курсор)
Процедура определяется следующим образом:
PROCEDURE GetAccessObjects2(ALotteryID IN VARCHAR2, AAccessObjects OUT CURSOR_TYPE) AS
BEGIN
OPEN AAccessObjects FOR
SELECT AccessObjectID, AccessObjectName
FROM AccessObjects;
END;
Затем я пытаюсь вызвать его изDelphi:
procedure TForm7.Button1Click(Sender: TObject);
begin
with ADOStoredProc1 do
begin
Connection := ADOConnection1;
CursorType := ctOpenForwardOnly;
MaxRecords := 5000;
ProcedureName := 'DDK.GetAccessObjects2';
with Parameters.AddParameter do
begin
Name := 'ALotteryID';
DataType := ftString;
Value := 'TEST';
end;
end;
ADOStoredProc1.Open;
end;
Но затем я получил исключение:
ORA-06550: строка 1, столбец 7: PLS-00306: неверный номер или типы аргументов при вызове'GETACCESSOBJECTS2' ORA-06550: строка 1, столбец 7: PL / SQL: оператор игнорируется
PS: ADOConnection1
- допустимое соединение с базой данных.
Согласно этой веб-странице нет необходимости определять параметр для курсора (AAccessObjects), но оракул думает иначе.
Короче говоря, как мне вызвать мой SP из Delphi с помощью ADO
ОБНОВЛЕНИЕ
Я попытался предоставить curser ad параметр:
with ADOStoredProc1 do
begin
Connection := ADOConnection1;
CursorType := ctOpenForwardOnly;
MaxRecords := 5000;
ProcedureName := 'DDK.GetAccessObjects2';
Parameters.CreateParameter('ALotteryID', ftString, pdInput, 255, 'TEST');
Parameters.CreateParameter('AAccessObjects', ftCursor, pdOutput, 0, null);
end;
ADOStoredProc1.Open;
Но тогда я получаю исключение внутри ADO:
Объект параметра неправильно определен