用ADO调用一个存储过程,有一个返回参数,怎样才能取得这个返回参数的数值呢???

解决方案 »

  1.   

    给你一个调用存储过程的例子!!!        Result := False;
            StoredProc.Close;
            StoredProc.StoredProcName := 'PR_xRollBack';
            StoredProc.Params.Clear;        StoredProc.Params.Add;
            StoredProc.Params[ 0 ].ParamType := ptInput;
            StoredProc.Params[ 0 ].Name      := 'No';
            StoredProc.Params[ 0 ].DataType  := ftString;
            StoredProc.Params[ 0 ].AsString  := Trim( SourceHead.No );        StoredProc.Params.Add;
            StoredProc.Params[ 1 ].ParamType := ptInput;
            StoredProc.Params[ 1 ].Name      := 'OldNo';
            StoredProc.Params[ 1 ].DataType  := ftString;
            StoredProc.Params[ 1 ].AsString  := Trim( SourceBody.No );        StoredProc.Params.Add;
            StoredProc.Params[ 2 ].ParamType := ptInput;
            StoredProc.Params[ 2 ].Name      := 'strDate';
            StoredProc.Params[ 2 ].DataType  := ftString;
            StoredProc.Params[ 2 ].AsString  := SourceHead.Date;        StoredProc.Params.Add;
            StoredProc.Params[ 3 ].ParamType := ptInput;
            StoredProc.Params[ 3 ].Name      := 'strTime';
            StoredProc.Params[ 3 ].DataType  := ftString;
            StoredProc.Params[ 3 ].AsString  :=Copy(SourceHead.Time,1,2)+':'+Copy(SourceHead.Time,3,2)+':'+Copy(SourceHead.Time,5,2);        StoredProc.Params.Add;
            StoredProc.Params[ 4 ].ParamType := ptOutput;
            StoredProc.Params[ 4 ].Name      := 'Sequence';
            StoredProc.Params[ 4 ].DataType  := ftString;        StoredProc.Params.Add;
            StoredProc.Params[ 5 ].ParamType := ptOutput;
            StoredProc.Params[ 5 ].Name      := 'Money';
            StoredProc.Params[ 5 ].DataType  := ftInteger;        StoredProc.Params.Add;
            StoredProc.Params[ 6 ].ParamType := ptOutput;
            StoredProc.Params[ 6 ].Name      := 'Result';
            StoredProc.Params[ 6 ].DataType  := ftInteger;
            Try
               Try
                  StoredProc.ExecProc;
                  Result := ( StoredProc.Params[ 6 ].AsInteger = 0 );
                  If Result Then
                  Begin
                       Sequence:= StoredProc.Params[ 4 ].AsString;
                       Money := StoredProc.Params[ 5 ].AsString;
                       WriteLog( ERROR_SUCCESS, CMD_ID, CMD_95_SELF_ROLLBACK );
                  End
                  Else WriteLog( ERROR_UPDATE_DATA, CMD_ID, CMD_95_SELF_ROLLBACK );
               Except
                     WriteLog( ERROR_UPDATE_DATA, CMD_ID, CMD_95_SELF_ROLLBACK );
               End;
            Finally
                   StoredProc.Close;
            End;
      

  2.   

    定义一个与此参数数据类型一样的变量
    如:
    aa:integer;
    adoquery.text:= 'exec 存储过程名' + aa + ''';
    执行完成后,aa的值就是存储过程的参数返回值
    OK