【发布时间】:2017-08-29 10:39:14
【问题描述】:
我写了一个简单的demo程序,下面是代码
delimiter //
create procedure test2(IN boss int, out name varchar(50))
begin
select Name into name from employee where Reports_to=boss;
end //
当我将此过程称为 CALL test2(2,@name) 时,它返回 null
虽然表格包含所有值 -
mysql> select * from employee;
+--------+--------+--------+-------------+------------+
| Emp_Id | Name | Salary | Department | Reports_to |
+--------+--------+--------+-------------+------------+
| 1 | Alok | 50000 | RnD | NULL |
| 2 | Mahesh | 40000 | Development | 1 |
| 3 | Ramesh | 40000 | Development | 1 |
| 4 | Bimal | 30000 | Sales | 2 |
| 5 | Javed | 20000 | Marketing | 4 |
| 6 | Mukesh | 35000 | Accounts | 3 |
+--------+--------+--------+-------------+------------+
如果我写CALL test2(1,@name) 也会显示错误
结果包含多行
如何解决这两个错误...??
【问题讨论】:
-
程序无法返回多个值,因此您需要将
LIMIT 1添加到您的查询中 -
避免将变量或参数命名为列名。
-
@Artem llchenko 能否请您指定我尝试添加限制 1 但它给出错误的语法..??