我在Oracle中有一个带有in参数的StoredProcedure和一个我们的参数(光标)
该程序的定义如下:
PROCEDURE GetAccessObjects2(ALotteryID IN VARCHAR2, AAccessObjects OUT CURSOR_TYPE) AS
BEGIN
OPEN AAccessObjects FOR
SELECT AccessObjectID, AccessObjectName
FROM AccessObjects;
END;然后我试着从德尔菲那里打电话:
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栏:请-00306:调用“GETACCESSOBJECTS2”ORA-06550的参数数目或类型错误:第1行,第7列: PL/SQL:忽略语句
PS:ADOConnection1是到数据库的有效连接。
根据这个网页,没有必要为游标(AAccessObjects)定义参数,但oracle却不这么认为。
所以简单地说,我如何用ADO从Delphi调用我的SP
更新
我曾试图为诅咒者提供一个参数:
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中得到了一个例外:
参数对象定义不当
发布于 2018-12-11 16:11:36
试试这个:
ParamType := ptOutput不确定甲骨文中CURSOR_TYPE的数据类型是什么。
https://stackoverflow.com/questions/53726591
复制相似问题