Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 过程返回空值_Mysql_Procedure - Fatal编程技术网

Mysql 过程返回空值

Mysql 过程返回空值,mysql,procedure,Mysql,Procedure,我写了一个简单的演示程序,下面是代码 delimiter // create procedure test2(IN boss int, out name varchar(50)) begin select Name into name from employee where Reports_to=boss; end // 当我将这个过程调用为calltest2(2,@name)时,它返回null 虽然表中有所有的值- mysql> select * from employee; +--

我写了一个简单的演示程序,下面是代码

delimiter //
create procedure test2(IN boss int, out name varchar(50))
begin
select Name into name  from employee where Reports_to=boss;
end //
当我将这个过程调用为
calltest2(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 |
+--------+--------+--------+-------------+------------+
如果我写
调用test2(1,@name)
它会显示错误

结果包含多行


如何解决这两个错误

以下查询失败,因为它不能为一个变量分配多个值:

select Name into name  from employee where Reports_to=boss;
您需要的是类似于
GROUP\u CONCAT
的东西,它将返回逗号分隔的值。请尝试以下操作:

SELECT GROUP_CONCAT(name) INTO names
FROM employee
WHERE reports_to = boss;

过程无法返回多个值,因此您需要将
LIMIT 1
添加到查询中,避免将变量或参数命名为列的名称。@Artem llchenko能否请您使用我试图添加LIMIT 1的语法进行指定,但它给出了错误..@Darshan Mehta它没有给出错误“结果包含多个值”但它仍然返回空值,请参见。。mysql>选择@name;+----+|@name |+----+| NULL |+----+更新了答案,立即重试?如果您的SQL语法有错误,则会显示错误;查看与您的MySQL服务器版本对应的手册,了解使用near'GROUP BY Emp_Id的正确语法;好的,删除了
分组依据
。您是否可以尝试将
name IS NOT NULL
添加到示例中,或者在CLI中尝试不带
GROUP\u CONCAT
的查询并发布输出?如果不带GROUP\u CONCAT,则会出现错误“结果包含多个值”