这是我用的语句,为什接收不到呢?
 close;
 sql.Clear;
 adoquery1.SQL.Add('aaaa');
 adoquery1.Parameters.Refresh;
 adoquery1.ExecSQL;
 edit1.Text:=vartostr(adoquery1.Parameters.ParamByName('@avg').Value);
谢谢。

解决方案 »

  1.   

    close;
     sql.Clear;
     adoquery1.SQL.Add('select ''aaaa'' as aaaa ');
     adoquery1.open;
     edit1.Text:= adoquery1.Parameters.ParamByName('aaaa').asstring;
      

  2.   

    我的语句可以执行,就是传不回存储过程里的参数。@avg是存储过程里的参数。
    adoquery1.SQL.Add('aaaa');aaaa是存储过程 adoquery1.SQL.Add('select ''aaaa'' as aaaa ');是什么意思啊。
      

  3.   

    变相的解决办法:先申明一个参数用来存储存储过程返回的直,最后在
    select 参数 as avg 最后通过adoquery1.fieldbyname(avg).asstring 得到这个直!
    浅见!
      

  4.   


    存储过程里边的变量是不能作为返回值返回的;
    你要在你的存储过程结尾处加一句;
     select @avg as 'avg'
    然后执行下边的语句;close;
     sql.Clear;
     adoquery1.SQL.Add(' exec aaaa ');
     adoquery1.open;
     edit1.text := adoquery1.fieldbyname('avg').asstring;
      

  5.   

    如果你的存储过程确实返回值的话,在adoquery1的Parameters属性里可以看见这个参数
    的,
    你只要使用
    adoquery1.Parameters.ParamByName('@avg').Value;
    就可以得到这个返回值,要是存储过程没有返回值的话,你当然得不到!
      

  6.   

    这个是存储过程
    CREATE  proc aaaa  @para1 char(10)='cccc',@ah int=0 output as
    select @ah=hhh from auname where name=@para1
    return @ah
    GO
    可是
    adoquery1.Parameters.ParamByName('@ah').Value;
    就得不到值,老说没有返回值。
      

  7.   

    作者可能不太会使用存储过程,我给你写一个把!
    在sql server中定义一个存储过程
    CREATE PROCEDURE selecta   @a int,@retval int output ASselect @retval=count(*) from a
    where a =@a
    客户端:
    var
     i:integer;
    i:=strtoint(edit1.text)//从edit1.text输入数据
    edit2.text:=inttostr(dcomconnection.appserver.update(i));
    //edit2.text显示执行结果
    //
    服务器端
    function TDM_update.update(a:Integer):integer;
    begin
     ADOStoredProc1.Parameters.ParamByName('@a').value:= a;//查询参数
     ADOStoredProc1.Parameters.ParamByName('@Retval').value:= 0;
     ADOStoredProc1.ExecProc;
      result:=ADOStoredProc1.Parameters.ParamByName('@retval').value;//回传结果
     
    end;