+ -
当前位置:首页 → 问答吧 → 调用Oracle存储过程返回数据集的问题

调用Oracle存储过程返回数据集的问题

时间:2011-10-21

来源:互联网

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;


错误信息:



弄了很久了就是不行

作者: wgywell   发布时间: 2011-10-21

首先在查询分析器里调试存储过程,然后检查输入参数是否正确。

作者: shijies   发布时间: 2011-10-21

参考下我以前的:
http://topic.csdn.net/t/20061124/10/5181888.html
可能是ADO的问题
(你的Oracle存储过程本身没问题,也可能是表字段类型问题)

作者: keiy   发布时间: 2011-10-21

我测试下,果然又是ADO的问题
你用Microsoft OLE DB Provider for Oracle就应该OK了

作者: keiy   发布时间: 2011-10-21