如何将SQL Server 2000 存储过程中输出参数的值赋给Delphi 的变量。

解决方案 »

  1.   

    根据输出参数类型定义delphi中的变量类型。如 a:integer;
    然后 a:=Adostoreproc.parameters[输出参数位置].value;
      

  2.   

    b为存储过程的参数a:=Adostoreproc.parameters[@b].value
      

  3.   


    try
        ADOStoredProc := TADOStoredProc.Create(nil);
        ADOStoredProc.Connection := ADOConnection;    ADOStoredProc.ProcedureName := 'SCount';
        ADOStoredProc.Parameters.CreateParameter('sid', ftInt, pdInput, 4, 0);
        ADOStoredProc.Parameters.CreateParameter('sno', ftInt, pdInOutput, 20, name);///////////////////output参数
        ADOStoredProc.Parameters.CreateParameter('Rcount', ftBoolean, pdReturnValue, 4, 0);/////////////////////////////////返回参数    ADOStoredProc.Prepared := True;
        ADOStoredProc.ExecProc;
        Result := ADOStoredProc.Parameters.ParamByName('sno').Value;///
        Result := ADOStoredProc.Parameters.ParamByName('Result').Value;/////
      finally
        ADOStoredProc.Free;
      end;
      

  4.   

    CREATE PROCEDURE test
         @a integer,@b integer,@c numerice output
         AS
         if @b<>0
         set @c=@a/@b
         else
         set @c=0
         
         调用:
         ******************
         adoreturnid.Close;
         adoreturnid.Parameters.ParamByName('@a').Value:=10;
         adoreturnid.Parameters.ParamByName('@b').Value:=4;
         adoreturnid.ExecProc;//要返回值必须用执行,不能用Open、Active:=true;
         edit1.text:=adoreturnid.Parameters.parambyname('@c').Value;