ADOStoredProc1.Active :=false;  ADOStoredProc1.ProcedureName := insert_New;1';
  ADOStoredProc1.Parameters.Refresh ;
  ADOStoredProc1.Parameters.ParamValues ['@nchType']:= 0 ;
  ADOStoredProc1.Parameters.ParamValues ['@mode']:=0 ;
  ADOStoredProc1.Parameters.ParamValues ['@atypeid']:= '0000100001';
  ADOStoredProc1.Parameters.ParamValues ['@ptypeid']:= ptypeid;  ADOStoredProc1.Parameters.ParamValues ['@dQty']:= StrToFloat(Edit3.text);
  ADOStoredProc1.Parameters.ParamValues ['@dTotal']:= StrToFloat(Edit1.text);
    ADOStoredProc1.ExecProc ;我是这么写的如何将存储过程中的Error3:

return -3Error42:

return -42Success:

return 0
return的返回值读出来呢???
比如我插入成功了则返回0不成功为-42,-3等

解决方案 »

  1.   

    Parameters.CreateParameter('RETURN_VALUE', ftInteger, pdReturnValue, 4, Result);


          ExecProc;
          iValue := Parameters.ParamValues['RETURN_VALUE'];
      

  2.   

    var
      iValue;  with ADOStoredProc1 do
      begin
    ..........
        Parameters.CreateParameter('RETURN_VALUE', ftInteger, pdReturnValue, 4, iValue);


        ExecProc;
        iValue := Parameters.ParamValues['RETURN_VALUE'];
      

  3.   

    第一种方法
    在ADOStoredProc1的属性面板的procedurename直接指定存储过程名
    然后
    with ADOStoredProc1 do
    begin  
      close;
      parameters.parambyname('@r').value:=值;
      execproc;
      if parameters[0].value <> 0 then showmessage('error')  //存储过程里写return 0表示存储过程成功 
      
    end;
    第二种
    动态创建参数
    sp_temp := TADOStoredProc.Create(Application);
    sp_temp.Connection := Fadoconnection;
    sp_temp.ProcedureName := 'sp_return_lbdm;1';
    with sp_temp do
    try
    Parameters.Clear;
    Parameters.CreateParameter('@lb_top',ftstring, pdinput,12,'a');//指定输入值,'a'参数值
    Parameters.CreateParameter('@lb_type',ftInteger, pdinput,12,1001);1001参数值
    Parameters.CreateParameter('@lb_level',ftInteger, pdinput,12,1);
    Parameters.CreateParameter('@lb_returndm',ftstring, pdoutput,12, '');这里输出参数
    ExecProc;
    result := Parameters.parambyname('@lb_returndm').value;//访问存储过程的输出参数
    finally
    end;
      

  4.   

    第一种方法
    在ADOStoredProc1的属性面板的procedurename直接指定存储过程名
    然后
    with ADOStoredProc1 do
    begin  
      close;
      parameters.parambyname('@r').value:=值;
      execproc;
      if parameters[0].value <> 0 then showmessage('error')  //存储过程里写return 0表示存储过程成功 
      showmeesage( parameters.parambyname('@param_out').value);//@param_out对应存储过程里的输出参数param_out out
      
    end;
      

  5.   

    直接用pdReturnValue参数不就行了,用得着搞那么多花样?-_-#
      

  6.   

    to  hthunter 为什么我用你的方法报
    为过程或者函数指定的参数太多的错误呢??
      

  7.   

    http://community.csdn.net/Expert/TopicView.asp?id=3130478
      

  8.   

    在中间层建立接口函数的时候procedure 改为function 注意参数类型的设置。