create procedure proc_4(in uname varchar(20),out uscore int) begin select score into uscore from user where uname=uname; end; set @uscore=0; call proc_4('平平人生',@uscore); select @uscore;这个语句实现查询平平人生的score,有什么错误吗
时间: 2024-02-01 11:02:37 浏览: 85
有错误
在存储过程中,变量名 `uname` 与参数名 `uname` 重复了,可能会导致语法错误或者逻辑错误。
以下是修改后的存储过程代码:
```
CREATE PROCEDURE proc_4(IN p_uname VARCHAR(20), OUT p_uscore INT)
BEGIN
SELECT score INTO p_uscore FROM user WHERE uname = p_uname;
END;
```
在调用存储过程时,需要使用修改后的参数名 `p_uname` 和 `p_uscore`,如下所示:
```
SET @uscore = 0;
CALL proc_4('平平人生', @uscore);
SELECT @uscore;
```
另外,在存储过程中,如果查询语句返回多行结果,则需要使用 `LIMIT` 关键字来限制结果集只返回一行结果,从而避免 "Result consisted of more than one row" 的错误。
阅读全文