关于SQL SERVER 存储过程return 返回值 ( 积分: 200 )

  • 主题发起人 主题发起人 kk2000
  • 开始时间 开始时间
K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
--下面过程是在查询分析器执行的<br>procedure&nbsp;InsertEmployee&nbsp;@fname&nbsp;varchar(20),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@lname&nbsp;varchar(30)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>As<br>begin<br>&nbsp;&nbsp;insert&nbsp;into&nbsp;New_Employees(fname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(@fname,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@lname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;if&nbsp;@@ROWCOUNT&nbsp;&gt;&nbsp;0&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;@@IDENTITY<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;<br>end<br><br>declare&nbsp;@ID&nbsp;int<br>exec&nbsp;@ID&nbsp;=&nbsp;InsertEmployee&nbsp;'AAA',&nbsp;'BBBBBB'<br>print&nbsp;@ID&nbsp;&nbsp;--这里是取得自增ID号的.&nbsp;不使用output&nbsp;输出.&nbsp;在delphi&nbsp;里面怎么获取得到&nbsp;存储过程的return&nbsp;返回值?
 
//经测试下面并不返回return&nbsp;的值<br>var<br>&nbsp;&nbsp;vReturn:&nbsp;Integer;<br>&nbsp;&nbsp;vv1,&nbsp;vv2,&nbsp;vv3:&nbsp;String;<br>begin<br>&nbsp;&nbsp;vv1&nbsp;:=&nbsp;'AAA';&nbsp;vv2&nbsp;:=&nbsp;'BBBBBBB';<br>&nbsp;&nbsp;With&nbsp;ADOQuery1&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Close;<br>&nbsp;&nbsp;&nbsp;&nbsp;SQL.Text&nbsp;:=&nbsp;'EXEC&nbsp;InsertEmployee&nbsp;:V1,&nbsp;:V2';<br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters.ParamByName('V1').Value&nbsp;:=&nbsp;vv1;<br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters.ParamByName('V2').Value&nbsp;:=&nbsp;vv2;<br>&nbsp;&nbsp;&nbsp;&nbsp;vReturn&nbsp;:=&nbsp;ExecSQL;<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage(IntToStr(vReturn));<br>&nbsp;&nbsp;end;
 
ADOQuery1&nbsp;去执行存储过程,和执行SQL语句有什么区别吗?<br>用ADOStoredProc...
 
frankie_24&nbsp;&nbsp;你测试过没有啊!&nbsp;晕死啊
 
SQL.Text&nbsp;:=&nbsp;'DECLARE @return_value&nbsp;int<br>EXEC&nbsp;@return_value&nbsp;=&nbsp;InsertEmployee&nbsp;:V1,&nbsp;:V2<br>SELECT 'Return&nbsp;Value'&nbsp;=&nbsp;@return_value'&nbsp;';
 
procedure&nbsp;InsertEmployee&nbsp;@fname&nbsp;varchar(20),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@lname&nbsp;varchar(30),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@XXX&nbsp;int&nbsp;output<br><br>&nbsp;&nbsp;最后把值传给@XXX<br><br>在DELPHI中调用的时候用&nbsp;&nbsp;ADOStoredProc去执行这个过程...要求给三个变量,最后一个变量就是用来存储你所要返回的值..
 
服务器中:<br>&nbsp;&nbsp;a_out&nbsp;:=&nbsp;AdoStoredProc.Data<br><br>客户端:<br>var&nbsp;a_out&nbsp;:&nbsp;OleVariant;<br>ClientDataset1.data&nbsp;:=&nbsp;a_Out;<br>Refresh;
 
//下面的语句就可以了!&nbsp;同时感谢&nbsp;银雨辰&nbsp;提供的思路.&nbsp;<br>var<br>&nbsp;&nbsp;vReturn:&nbsp;Integer;<br>&nbsp;&nbsp;vv1,&nbsp;vv2,&nbsp;vv3:&nbsp;String;<br>begin<br>&nbsp;&nbsp;vv1&nbsp;:=&nbsp;'AAA';&nbsp;vv2&nbsp;:=&nbsp;'BBBBBBB';<br>&nbsp;&nbsp;With&nbsp;ADOQuery1&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Close;<br>&nbsp;&nbsp;&nbsp;&nbsp;SQL.Text&nbsp;:=&nbsp;'&nbsp;DECLARE&nbsp;&nbsp;@return_value&nbsp;int&nbsp;'&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;'&nbsp;EXEC&nbsp;@return_value&nbsp;=&nbsp;InsertEmployee&nbsp;:V1,&nbsp;:V2'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;'&nbsp;select&nbsp;@return_value';<br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters.ParamByName('V1').Value&nbsp;:=&nbsp;vv1;<br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters.ParamByName('V2').Value&nbsp;:=&nbsp;vv2;<br>&nbsp;&nbsp;&nbsp;&nbsp;Open;<br>&nbsp;&nbsp;&nbsp;&nbsp;vReturn&nbsp;:=&nbsp;Fields[0].AsInteger;<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage(IntToStr(vReturn));<br>&nbsp;&nbsp;end;
 
呵呵。可以这样啊以前就知道用&nbsp;output了。学习学习啊。
 
多人接受答案了。
 
后退
顶部