存储过程本身已测试,无问题,能够返回正确结果,但在Delphi程序中,
运行会出现错误,程序片断:  ADOSP.Active := False;
  ADOSP.ProcedureName := 'sp_InsertRole';  ADOSP.Parameters.Clear; //清空参数列表
  with ADOSP.Parameters.AddParameter do //追加新参数
  begin
    Name := 'ARoleID';
    DataType := ftString;
    Direction := pdInput;
    Size := 2;
  end;
  with ADOSP.Parameters.AddParameter do
  begin
    Name := 'AName';
    DataType := ftString;
    Direction := pdInput;
    Size := 30;
  end;
  with ADOSP.Parameters.AddParameter do
  begin
    Name := 'RtnValue';
    DataType := ftBCD;
    Direction := pdInputOutput;
  end;
  if not ADOSP.Prepared then ADOSP.Prepared := True;  ADOSP.Parameters.ParamByName('ARoleID').Value := RoleID;
  ADOSP.Parameters.ParamByName('AName').Value := Name;
  ADOSP.ExecProc;//这里会出错
  Result := ADOSP.Parameters.ParamByName('RtnValue').Value;如果去掉返回值,程序正常,很显然返回变量这儿有问题,不知道怎么改?

解决方案 »

  1.   

    我这样使用的
    ADOSP.Active := False;
      ADOSP.ProcedureName := 'SP_INSERTROLE';
      ADOS.Prepared:=true;
      adosp.Parameters.parambyname('ARoleID').value:=your param;
      ...
      aDOSP.ExecProc;
     Result := ADOSP.Parameters.ParamByName('RtnValue').Value;
    ADOS.Prepared:=false;
      
      

  2.   

    Direction := pdInputOutput;入参!ADOSP.Parameters.ParamByName('ARoleID').Value := RoleID;
    ADOSP.Parameters.ParamByName('AName').Value := Name;
    ADOSP.Parameters.ParamByName('RtnValue'').Value := 0;
      

  3.   

    支持 huanying200X(幻影200X) 的说法
      

  4.   

    with ADOSP.Parameters.AddParameter do
    begin
      Name := 'RtnValue';
      DataType := ftBCD;
      Direction := pdInputOutput;   //或改成pdOutput
    end;(注:対出入型pdInputOutput、也要在実行前付値)
    {...}
    ADOSP.Parameters.ParamByName('RtnValue').Value := ' ';
    ADOSP.ExecProc;
      

  5.   

    你是用什么方式连接的oracle?如果用oledb连接是没有问题的,如果用odbc就会有问题
      

  6.   

    谢谢各位,回头我试试!
    我的代码是基于MSSQL的,现在要移植到Oracle上to fenglaile(风清飘) :
    ADOSP是个公用控件,不知道ADOS.Prepared:=true;能不能自动加载参数to huanying200X(幻影200X)、 cronuz(cronus) :
    我还真没注意,在MSSQL上没有这个限制
      

  7.   

    谢谢,搞定,就是Direction 的问题