mysql 存储过程的问题

吉林省四而科技公司 2018-05-25 06:55:44
DELIMITER //
create procedure gettest()
begin
set ppp=(select deptName from interview_department where taskCode='11221111' and deptCode='302079' );
select ppp;
end;
//
DELIMITER ;

-- 表结构
taskcode deptcode
11221111 部门名称
123 部门名称

执行的时候 提示Error Code: 1242 Subquery returns more than 1 row
但是我的 where 条件都做限制了啊。 这是什么原因?
...全文
1121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2018-06-08
  • 打赏
  • 举报
回复
查询出来的结果不是一行记录。
o前男友o 2018-06-08
  • 打赏
  • 举报
回复
DELIMITER $$
DROP PROCEDURE IF EXISTS `gettest`$$
CREATE PROCEDURE `gettest`(out _ppp varchar(20))
	SQL SECURITY INVOKER
    BEGIN
	
	set _ppp = ( select deptName from interview_department where taskCode='11221111' and deptCode='302079' limit 1 );
	select _ppp;
	
    END$$
DELIMITER ;

call gettest(@q);
select @q;
何牧晗 2018-06-04
  • 打赏
  • 举报
回复
因为mysql查询会先经过语法分析, 分析阶段不会知道你具体数据的多少 不加limit 1 就有可能返回的是多条,分析阶段就会报错了
ACMAIN_CHM 2018-05-26
  • 打赏
  • 举报
回复
因为符合条件的不只一条
  • 打赏
  • 举报
回复
为什么要加limit 1 才能好使呢?
ACMAIN_CHM 2018-05-25
  • 打赏
  • 举报
回复
set ppp=(select deptName from interview_department where taskCode='11221111' and deptCode='302079' limit 1);
  • 打赏
  • 举报
回复
select deptName from interview_department where taskCode='11221111' and deptCode='302079' 在语句后面加 limit 1; 就没问题了,但是我的where条件设置了2个啊,为什么提示我子查询 返回多行?

56,677

社区成员

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

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