如何使用游标?
使用游标的4条特殊语句
1)、声明游标
声明格式:
Declare 游标名 cursor for select (返回一行或多行数据)
Select语句中不能有into子句,一个块中的每个游标必须有唯一的名字。
游标只能在存储过程或存储函数中使用,语句不能单独运行。
2)、打开游标
Open 游标名;
这个比较简单哦!
3)、读取游标
Fetch 游标名 into var_name[,var_name]……
说明:fetch语句是将游标指向的一行数据赋给一些变量,子句中变量的数目必须等于声明游标时select子句中列的数目。Var_name 是存放数据的变量名。
4)、关闭游标
Close 游标名;
不要忘记哦!
今天的小实例
1)、
mysql> create procedure p19(out para1 int)
-> begin
-> declare v int default 0;
-> declare c cursor for
-> select s1 from t1;
-> open c;
-> while v<5 do
-> fetch c into para1;
-> set v=v+1;
-> end while;
-> close c;
-> end//
Query OK, 0 rows affected (0.00 sec)
mysql> call p19(@x);//
Query OK, 0 rows affected (0.00 sec)
mysql> select @x;//
+------+
| @x |
+------+
| 90 |
+------+
1 row in set (0.00 sec)
2)、mysql> create procedure p20(out para1 int )
-> begin
-> declare a boolean default true ;
-> declare c cursor for
-> select s1 from t1 ;
-> declare exit handler for not found
-> set a=false;
-> open c;
-> while a do
-> fetch c into para1;
-> end while;
-> close c;
-> end//
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> call p20(@x);//
Query OK, 0 rows affected (0.00 sec)
mysql> select @x;
-> //
+------+
| @x |
+------+
| 90 |
+------+
1 row in set (0.00 sec)
这两个例子通过不同的方法,得到了相同的结果。
一个简单的小补充
Mysql数据库中,mysql语言的组成部分
1) 数据库的定义语言(DDL)
包括:create alter drop
2) 数据库的操纵语言(DML)
包括:select(使用最频繁的sql语句之一) insert update delete(删除)
3) 数据库的控制语言(DCL)
包括:crant(授予权限) revoke(收回权限)