用ADOQquery怎样返回OUTPUT的值呢?AQquery.SQL.Clear;
AQquery.SQL.Add('declare @id int , @classid int');
AQquery.SQL.Add('exec @id=DO_ProcFLqtclass '''+qtclass+''',@classid output select @classid');
AQquery.ExecSQL;结果是想将存储过程中的返回值classid再赋给一个变量,如:
id:=AQquery.parameters.parambyname('@classid').value;但是这样不行提示没有@classid 
这句该如何写呢?不知道在Delphi中用ADOQuery执行存储存程序后怎样将OUTput的值赋给Delphi中的一个变量呢?

解决方案 »

  1.   

    AQquery无法取值的吗,是必需用ADOStoredProc才能取得返回值??是否能具体说说怎样实样?
      

  2.   

    用ADOStoredProc控件:参考:CREATE  procedure P_GetLSH
    @lsh varchar(6) output
    as
    declare @i int,@len int
    update sys_lsh
    set lsh=lsh+1
    select @lsh=cast(lsh as varchar(6))
    from sys_lshset @len=6-len(@lsh)
    set @i=0
    while @i<@lsh
    begin
    set @lsh='0'+@lsh
    set @i=@i+1
    end 
      select @lsh
    GO
    取得返回值:
    Edit1.text := ADOStorcedProc.parameters.parambyname('@lsh ').value;
      

  3.   

    SQL SERVER中的存储过程如下:CREATE PROCEDURE Test 
    @Str VarChar(200),
    @classid int OutPut
    AS
    begin tran a
    Select @classid=id From class where class= @Str
    GO-----------------------------------在delphi中通过调用存储过程TEST,代码:
      
    var
     id:integer;
    begin
      with ADOStoredProc1,Parameters do
      begin
        Close;
        ProcedureName := 'Test;1';
        Refresh;
        ParamByName('@Str').Value := 'pmc';  //输入参数
        ExecProc;
        id:=ParamByName('@classid').Value;   //存储过程输出参数的值
      end;
    end;  这样做不行无法返回classid呀!
      

  4.   

    (笔误):将上面的存储过程Test中 begin  tran  a  取掉