这是我用的语句,为什接收不到呢?
close;
sql.Clear;
adoquery1.SQL.Add('aaaa');
adoquery1.Parameters.Refresh;
adoquery1.ExecSQL;
edit1.Text:=vartostr(adoquery1.Parameters.ParamByName('@avg').Value);
谢谢。
close;
sql.Clear;
adoquery1.SQL.Add('aaaa');
adoquery1.Parameters.Refresh;
adoquery1.ExecSQL;
edit1.Text:=vartostr(adoquery1.Parameters.ParamByName('@avg').Value);
谢谢。
sql.Clear;
adoquery1.SQL.Add('select ''aaaa'' as aaaa ');
adoquery1.open;
edit1.Text:= adoquery1.Parameters.ParamByName('aaaa').asstring;
adoquery1.SQL.Add('aaaa');aaaa是存储过程 adoquery1.SQL.Add('select ''aaaa'' as aaaa ');是什么意思啊。
select 参数 as avg 最后通过adoquery1.fieldbyname(avg).asstring 得到这个直!
浅见!
存储过程里边的变量是不能作为返回值返回的;
你要在你的存储过程结尾处加一句;
select @avg as 'avg'
然后执行下边的语句;close;
sql.Clear;
adoquery1.SQL.Add(' exec aaaa ');
adoquery1.open;
edit1.text := adoquery1.fieldbyname('avg').asstring;
的,
你只要使用
adoquery1.Parameters.ParamByName('@avg').Value;
就可以得到这个返回值,要是存储过程没有返回值的话,你当然得不到!
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;
就得不到值,老说没有返回值。
在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;