存储过程这样写会返回值吗

盛夏满街的大腿 2012-02-22 12:31:41

delimiter $$
DROP procedure IF exists Member_Add;
create procedure Member_Add(
iName varchar(50) ,
iPSW varchar(32) ,
iHomePage varchar(50) ,
iQQ varchar(50) ,
out iReturns int )
begin
if not exists(select ID from Member where 'Name'=iName) then
begin
INSERT INTO Member
(
`Name`,`PSW`,`HomePage`,`QQ`
)
VALUES
(
iName,iPSW,iHomePage,iQQ
);
select last_insert_id() into iReturns;
end;
else
select 0 into iReturns;
end if;
end;$$

主要是想返回iReturns,是否可以成功
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一年多没搞这个东西了,都忘记了。现在都写不出来代码了呵呵,结了吧。是MYSQL还是MSSQL都分不出来了,忘记的真快啊。
yashifc 2012-02-23
  • 打赏
  • 举报
回复
可以,你可以自己调用一下就知道有值返回不了,如
call Member_Add('aa','xx','bb','dd',@a);
select @a;
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rucypli 的回复:]

最后select iReturns出来啊
[/Quote]
那不是返回数据集了吗,我要返回int啊,只要这里iReturns能赋上值,我想在外面程序里取这个out参数的值
rucypli 2012-02-22
  • 打赏
  • 举报
回复
最后select iReturns出来啊
ACMAIN_CHM 2012-02-22
  • 打赏
  • 举报
回复
另外,可以参考 create funciton 的写法,函数可以直接返回值并引用。
ACMAIN_CHM 2012-02-22
  • 打赏
  • 举报
回复
delimiter $$
DROP procedure IF exists Member_Add;
create procedure Member_Add(
iName varchar(50) ,
iPSW varchar(32) ,
iHomePage varchar(50) ,
iQQ varchar(50) ,
out iReturns int )
begin
if not exists(select ID from Member where 'Name'=iName) then
begin
INSERT INTO Member
(
`Name`,`PSW`,`HomePage`,`QQ`
)
VALUES
(
iName,iPSW,iHomePage,iQQ
);
select last_insert_id() into iReturns;
end;
else
select 0 into iReturns;
end if;
select iReturns;
end;$$


这样会产生一个结果集,返回一行一列即iReturns的值。

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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