MySQL存储过程中使用SELECT …INTO语句为变量赋值


SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。请参阅9.3节,“用户变量”。 


重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:


使用SELECT …INTO语句为变量赋值
在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量。SELECT …INTO语句的语法格式如下:
SELECT col_name[,...] INTO var_name[,...] table_expr 
col_name:要从数据库中查询的列字段名;
var_name:变量名,列字段名按照在列清单和变量清单中的位置对应,将查询得到的值赋给对应位置的变量;
table_expr:SELECT语句中的其余部分,包括可选的FROM子句和WHERE子句。
需要注意的是,在使用SELECT …INTO语句时,变量名不能和数据表中的字段名不能相同,否则会出错。范例语句:
create procedure getMsg  
()  
Begin 
declare v_title varchar(30);  
declare v_content varchar(100);  
select title,content into v_title,v_content from news where artId=333;  
End  
 
将变量值返回给调用者
在存储过程中定义的变量,经过一系列的处理之后,结果值可能需要返回给存储过程调用者。那么如何返回呢?方便的做法是使用SELECT语句将变量作为结果集返回,因此,在上面一段代码的基础上,加上一句:
create procedure getMsg  
()  
Begin 
declare v_title varchar(30);  
declare v_content varchar(100);  
select title,content into v_title,v_content from news where artId=333;  
select v_title,v_content;  
End 

你可能感兴趣的:(mysql)