MySQL存储过程和函数(二)

1、BEGIN....END
[begin_label:] BEGIN
    [statement_list]
END [end_label]
 
2.DECLARE语句
DECLARE var_name[,...] type [DEFAULT value]
局部变量的申明,如:DECLARE name VARCHAR(20);
DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。
光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。
 
3、变量SET语句
SET var_name = expr [, var_name = expr] ...
SET var = 1;
 
4、SELECT.....INTO语句
SELECT col_name[,...] INTO var_name[,...] table_expr
单条记录的值INTO到对应的变量
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;

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

CREATE PROCEDURE sp1 (x VARCHAR(5))
  BEGIN
    DECLARE xname VARCHAR(5) DEFAULT 'bob';
    DECLARE newname VARCHAR(5);
    DECLARE xid INT;
    
    SELECT xname,id INTO newname,xid 
      FROM table1 WHERE xname = xname;
    SELECT newname;
  END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。

posted on 2017-01-19 09:57  小董斌  阅读(106)  评论(0编辑  收藏  举报

导航