您好,欢迎访问一九零五行业门户网

MySql官方手册学习笔记3―MySql中的存储过程简介_MySQL

bitscn.com
mysql官方手册学习笔记3—mysql中的存储过程简介 相关链接:mysql官方手册学习笔记1—mysql简单上手http:///database/201210/159522.html;mysql官方手册学习笔记2—mysql的模糊查询和正则表达式http:///database/201210/160095.html select into   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’。 handler mysql> create table test.t (s1 int,primary key (s1)); query ok, 0 rows affected (0.00 sec) mysql> delimiter //  //将定界符“;”改为“//”,因为程序中需要用到“;”。   mysql> create procedure handlerdemo ()     -> begin     ->   declare inserterr condition for sqlstate '23000';  //声明condition     ->   declare continue handler for inserterr set @x2 = 1;//声明handler     ->   set @x = 1;  //为局部变量赋值     ->   insert into test.t values (1);     ->   set @x = 2;     ->   insert into test.t values (1);     ->   set @x = 3;     -> end;     -> // query ok, 0 rows affected (0.00 sec) mysql> call handlerdemo()// query ok, 0 rows affected (0.00 sec) mysql> select @x//     +------+     | @x   |     +------+     | 3    |     +------+     1 row in set (0.00 sec) 注意到,@x是3,这表明mysql被执行到程序的末尾。如果declare continue handler for inserterr set @x2 = 1; 这一行不在,第二个insert因primary key强制而失败之后,mysql可能已经采取 默认(exit)路径,并且select @x可能已经返回2。   cursor create procedure curdemo() begin   declare done int default 0;   declare a char(16);   declare b,c int;   declare cur1 cursor for select id,data from test.t1;   declare cur2 cursor for select i from test.t2;   declare continue handler for sqlstate '02000' set done = 1;   open cur1; //使用前先打开游标   open cur2;   repeat     fetch cur1 into a, b;       fetch cur2 into c;     if not done then        if b delimiter //   mysql> create procedure dorepeat(p1 int)     -> begin     ->   set @x = 0;     ->   repeat set @x = @x + 1; until @x > p1 end repeat;     -> end     -> // query ok, 0 rows affected (0.00 sec) mysql> call dorepeat(1000)// query ok, 0 rows affected (0.00 sec) mysql> select @x//   +------+ | @x   | +------+ | 1001 | +------+ 1 row in set (0.00 sec) while create procedure dowhile() begin   declare v1 int default 5;   while v1 > 0 do    ...     set v1 = v1 - 1;   end while; en bitscn.com
其它类似信息

推荐信息