有一段存储过程我如何使用ADO控件调用它的输出值和输入它的输入值CREATE PROC P_NextBH
@Name char(3),
@BH nvarchar(20) OUTPUT
AS
BEGIN TRAN
  if @Name='YJD' 
  begin
     Update DHsystem WITH(ROWLOCK) SET  @BH=YJD+1, YJD=YJD+1
  end  if @Name='CYD' 
  begin
     Update DHsystem WITH(ROWLOCK) SET  @BH=CYD+1, CYD=CYD+1
  endCOMMIT TRAN
GO

解决方案 »

  1.   


      with Self.ADOStoredProc1 do begin
        ProcedureName := 'P_NextBH';
        Parameters.CreateParameter('@Name,ftString, pdInput, 3, 'chn');
        Parameters.CreateParameter('@BH'',ftString, pdOutput, 20, '');
        ExecProc;    ShowMessage( Parameters.ParamByName('@BH').Value );
      end;
      

  2.   

    输入和输出参数调用方法是一样的,你只要在调用的时候给输出参数一个初始值就可以了。
    delphi的示例如下:var
      P1, P2: TParam;
    begin
      ...
      with StoredProc1 do begin
        StoredProcName := 'GET_EMP_PROJ';
        Params.Clear;
        P1 := TParam.Create(Params, ptInput);
        P2 := TParam.Create(Params, ptOutput);
        try
          Params[0].Name := 'EMP_NO';
          Params[1].Name := 'PROJ_ID';
          ParamByname('EMP_NO').AsSmallInt := 52;
          ExecProc;
          Edit1.Text := ParamByname('PROJ_ID').AsString;
        finally
          P1.Free;      P2.Free;
        end;
      end;
      ...
    end;