MYSQL存储过程发生Result consisted of more than one r...解

页面导航:首页 > 数据库 > Mysql > MYSQL存储过程发生Result consisted of more than one r...解

MYSQL存储过程发生Result consisted of more than one r...解

来源: 作者: 时间:2016-02-05 10:56 【

MYSQL存储过程发生Result consisted of more than one r 摘要: MYSQL存储过程错误SELECT INTO 这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。在使用的时候,要注意
MYSQL存储过程发生Result consisted of more than one r...
 
摘要: MYSQL存储过程错误
 
SELECT … INTO …
 
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。
 
在使用的时候,要注意,加上LIMIT 1
 
SELECT id,data INTO x,y FROM topic LIMIT 1;

 

另外,这种赋值语句还有个规矩就是参数名和字段名不能冲突,不然能够执行过去,但是却没有给参数赋值,这是个很隐性的错误,可以参考手册上的:
 
重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。
 
DELIMITER //

CREATE PROCEDURE mytopic (

        topicId INT(4),

        title VARCHAR(50)

        )  

BEGIN    

    SELECT topicId,title 

    INTO topicId,title       

    FROM tbl_topic limit 1;  

END//

DELIMITER ;

 

当这个程序被调用的时候,无论topicId,title列的值是什么,变量newname将返回值‘NULL’。 
 
即:

CALL mytopic(@topicId,@title);

SELECT @topicId,@title;

显示结果:


@topicId  @title

NULL        NULL

 


Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<