sql存储过程返回值与RAISE

COMPUTERZZZ 2009-04-23 10:48:16
有一个存储过程:
CREATE proc aa(@flag int)
as
if @flag=1
begin
raiserror('flag is 1',16,1)
return 1
end
else
begin
raiserror('flag is 0',16,1)
return 0
end

DELPHI程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var s: char;
Re:integer;
begin

try
ADOStoredProc1.Parameters.ParamByName('@flag').Value:=1;
ADOStoredProc1.ExecProc;
re:=adostoredproc1.Parameters.ParamByName('@RETURN_VALUE').Value;
//showmessage(re);
// showmessage(adostoredproc1.Parameters.ParamValues['@Return_Value']);
except
on e:exception do showmessage(e.Message);
end;
showmessage(inttostr(re));
end;
返回值使终都是0,好像都没有执行RETURN这一句?
...全文
249 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
雄牛 2009-05-13
  • 打赏
  • 举报
回复


路过~~~~
友情UP
windindance 2009-05-13
  • 打赏
  • 举报
回复
由于Raise会返回一个错误,所以在查询分析器中执行1楼的代码会显示“消息”选项卡。
你选择“网格”选项卡,就能看到返回的return 的值。
COMPUTERZZZ 2009-04-23
  • 打赏
  • 举报
回复
我是用DELPHI调用的

不过我用你的方式,试过:提示
服务器: 消息 50000,级别 16,状态 1,过程 aa,行 6
flag is 1

(所影响的行数为 1 行)
不是没有RETURN 的值呀~
starluck 2009-04-23
  • 打赏
  • 举报
回复
語句應該是這樣的
starluck 2009-04-23
  • 打赏
  • 举报
回复

CREATE proc aa(@flag int)
as
if @flag=1
begin
raiserror('flag is 1',16,1)
return 1
end
else
begin
raiserror('flag is 0',16,1)
return 0
end



declare @i int
execute @i = aa 1
select @i


2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧