mysql存储过程记录集_MySQL存储过程返回多个记录集

我在我的数据库(

MySQL)中创建了一些存储过程,如下所示.

存储过程1

CREATE PROCEDURE sp_Name1(

param1,

param2,

......

)

BEGIN

.....

some code

IF cond THEN

call sp_Name2 //Calling 2nd procedure from here.

Update SomeTable .....

SELECT '1' As Result;

END IF

END

存储过程2

CREATE PROCEDURE sp_Name2(

param1,

param2,

......

)

BEGIN

.....

some code

IF cond THEN

SELECT '2' As Result;

SELECT '3' As Result;

END IF

END

现在我调用我的第一个存储过程如下:

Call sp_Name1(param1, param2, ... );

这里我在MySQL Workbench中获得了4个结果集. sp_Name2中的2个结果,sp_Name1中的update语句的第3个结果和select语句中的第4个结果,也是sp_Name1中的结果.在这里,我只是寻找最后的结果集.有时候结果序列会出现在预期的顺序中,这意味着结果可能会出现在结果1,结果2,结果4,结果3中(在这种情况下,我无法判断哪个结果集对我有用,因为最后的结果集可能被改变了.

如何抑制不需要的结果集?

编辑:

我有一个用例,以便您更好地理解.

CREATE PROCEDURE sp_LoginUser( IN Username varchar(50) , IN password varchar(50) )

BEGIN

IF EXISTS( SELECT 1 FROM Users where name = UserName and Pwd = password)

SET userid = 0;

SET loginid = 0;

SELECT userid INTO userid

FROM users

WHERE name = UserName and Pwd = password;

IF userid > 0 THEN

CALL sp_Login(userid);

SET loginid = LAST_INSERT_ID();

END IF;

//only this result i am expecting.

IF loginid > 0 THEN

SELECT userid as userid, loginid AS loginid;

ELSE

SELECT 0 userid, 0 loginid;

END IF;

END IF;

END

CREATE PROCEDURE sp_Login( IN Userid int )

BEGIN

INSERT Logins ( userid, datetime )

VALUES ( Userid, now() );

SELECT LAST_INSERT_ID() AS loginid;

END

所以,现在当我的用户请求登录并在我的登录页面输入他/她的用户名密码时,我就在我的服务器上调用了sp_LoginUser().在许多情况下,我必须分别调用sp_Login().

在上面的例子中,我可以在sp_Login()过程中设置一个参数(例如,loginid)AS INOUT,为其分配LAST_INSERT_ID(),删除SELECT语句并在sp_LoginUser()中检索.

但是当我需要单独调用sp_Login()时,我必须在编码中声明一些变量来检索值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值