调用Oracle存储过程返回数据集的有关问题
调用Oracle存储过程返回数据集的问题
Oracle存储过程
CREATE OR REPLACE PROCEDURE MYDATA.AAA /* (参数, 参数...) */
(
v_id in NUMBER,
c_outdata out SYS_REFCURSOR
)
IS
v_sql varchar2(200);
BEGIN
v_sql :='select * from userinfo where userid='||v_id;
open c_outdata for v_sql;
END ;
/
DELPHI 调用
var
ADOStoredProc:TADOStoredProc;
begin
ADOStoredProc:=TADOStoredProc.Create(nil);
try
try
ADOStoredProc.Connection:=ADOConnection;
ADOStoredProc.Close;
ADOStoredProc.ProcedureName:=MYDATA.AAA';
ADOStoredProc.Parameters.CreateParameter('c_id',ftInteger,pdInput,10,123);
ADOStoredProc.Open;
except
on E:Exception do
begin
Msgbox(E.Message,mtError,[mbok],0);
end;
end;
finally
ADOStoredProc.Free;
end;
end;
错误信息:
弄了很久了就是不行
------解决方案--------------------
我的异常网推荐解决方案:oracle存储过程,http://www..net/oracle-develop/177537.html
------解决方案--------------------
首先在查询分析器里调试存储过程,然后检查输入参数是否正确。
------解决方案--------------------
参考下我以前的:
http://topic.****.net/t/20061124/10/5181888.html
可能是ADO的问题
(你的Oracle存储过程本身没问题,也可能是表字段类型问题)
------解决方案--------------------
我测试下,果然又是ADO的问题
你用Microsoft OLE DB Provider for Oracle就应该OK了
Oracle存储过程
CREATE OR REPLACE PROCEDURE MYDATA.AAA /* (参数, 参数...) */
(
v_id in NUMBER,
c_outdata out SYS_REFCURSOR
)
IS
v_sql varchar2(200);
BEGIN
v_sql :='select * from userinfo where userid='||v_id;
open c_outdata for v_sql;
END ;
/
DELPHI 调用
var
ADOStoredProc:TADOStoredProc;
begin
ADOStoredProc:=TADOStoredProc.Create(nil);
try
try
ADOStoredProc.Connection:=ADOConnection;
ADOStoredProc.Close;
ADOStoredProc.ProcedureName:=MYDATA.AAA';
ADOStoredProc.Parameters.CreateParameter('c_id',ftInteger,pdInput,10,123);
ADOStoredProc.Open;
except
on E:Exception do
begin
Msgbox(E.Message,mtError,[mbok],0);
end;
end;
finally
ADOStoredProc.Free;
end;
end;
错误信息:
弄了很久了就是不行
------解决方案--------------------
我的异常网推荐解决方案:oracle存储过程,http://www..net/oracle-develop/177537.html
------解决方案--------------------
首先在查询分析器里调试存储过程,然后检查输入参数是否正确。
------解决方案--------------------
参考下我以前的:
http://topic.****.net/t/20061124/10/5181888.html
可能是ADO的问题
(你的Oracle存储过程本身没问题,也可能是表字段类型问题)
------解决方案--------------------
我测试下,果然又是ADO的问题
你用Microsoft OLE DB Provider for Oracle就应该OK了