存储过程:
CREATE PROCEDURE [DBO].[user_returnsum]
@sn char(14) ,
@roomname char(20),
@allsum int output,
@localsum int output
AS
set @allsum=
(SELECT SUM(金额) from 消费明细表 where 流水号=@sn)
set @localsum=
(SELECT SUM(金额) from 消费明细表 where 流水号=@sn and 包间名称=@roomname )
GODELPHI 调用存储过程:
with ADOStoredProc1 do
begin
close;
ProcedureName:='user_returnsum';
Parameters.parambyname('@sn').value:=SN;
Parameters.parambyname('@roomname').value:=RoomName;
ExecProc;
Edit1.Text:=inttostr(Parameters.parambyname('@allsum').value);
Edit2.Text:=inttostr(Parameters.parambyname('@localsum').value);
end;ADOStoredProc1 在使用Build 获紧 ConnectionString 后,再OBJECT INSPECTOR 里设定好存储过程名(user_returnsum),再运行没有错误。一看(Parameters)属性里已经填好了以上四个参数及RETURN 参数。 但是,如果我在把 Connection 属性设置成 ADOConnection1 后,就不能执行了,说@sn Not found! 在座的高手请指点一二!
CREATE PROCEDURE [DBO].[user_returnsum]
@sn char(14) ,
@roomname char(20),
@allsum int output,
@localsum int output
AS
set @allsum=
(SELECT SUM(金额) from 消费明细表 where 流水号=@sn)
set @localsum=
(SELECT SUM(金额) from 消费明细表 where 流水号=@sn and 包间名称=@roomname )
GODELPHI 调用存储过程:
with ADOStoredProc1 do
begin
close;
ProcedureName:='user_returnsum';
Parameters.parambyname('@sn').value:=SN;
Parameters.parambyname('@roomname').value:=RoomName;
ExecProc;
Edit1.Text:=inttostr(Parameters.parambyname('@allsum').value);
Edit2.Text:=inttostr(Parameters.parambyname('@localsum').value);
end;ADOStoredProc1 在使用Build 获紧 ConnectionString 后,再OBJECT INSPECTOR 里设定好存储过程名(user_returnsum),再运行没有错误。一看(Parameters)属性里已经填好了以上四个参数及RETURN 参数。 但是,如果我在把 Connection 属性设置成 ADOConnection1 后,就不能执行了,说@sn Not found! 在座的高手请指点一二!
我也不会一点建议:
ProcedureName:='user_returnsum';
连接后看看你的过程名称能不能在程序里面选择出来?然后在看看你得Prameters!!!有几个参数!~!
正常应该没有问题的.
params.refresh
先刷新一下参数
特别感谢 “Changefish(问题总会解决的)”。
在我眼里,比我懂的人都是高手。我只希望解决问题的人,能在最后把正确的解决方法公布一下,省得以后遇到同样问题的低手再次提出这个问题!在我试验的过程中,如果不加以下两句,程序还是会提示@Allsum 没有找到!
Parameters.parambyname('@Allsum').value:=i;
Parameters.parambyname('@localsum').value:=j;
with ADOStoredProc1 do
begin
close;
ProcedureName:='user_returnsum';
parameters.refresh;
Parameters.parambyname('@sn').value:=SN;
Parameters.parambyname('@roomname').value:=RoomName;
Parameters.parambyname('@Allsum').value:=i;
Parameters.parambyname('@localsum').value:=j;
ExecProc;
EditThisRoomSUM.Text:=inttostr(Parameters.parambyname('@Localsum').value);
EditAllRoomSum.Text:=inttostr(Parameters.parambyname('@Allsum').value);
end;