利用navicat创建存储过程、触发器和使用游标的简单实例。
1、建表
首先先建两张表(users表和number表),具体设计如下图:
2、存储过程
写一个存储过程,往users表中插入数据,创建过程如下:
代码如下:
[sql] view plain copy print?
BEGIN #Routine body goes here…
declare n bigint; set n = 201121029684;
while n <= 201121029694 do
insert into users(student_ID) values(n); set n = n + 1;
end while; END[sql] view plain copy print?
truncate table users;[sql] view plain copy print?
begin update number
set num = (select count(*) from users) ; end[sql] view plain copy print?
BEGIN #Routine body goes here…
declare tmp bigint default 0;
declare cur CURSOR FOR SELECT student_ID FROM users; – 定义游标 /*
02000 发生下述异常之一: SELECT INTO 语句或 INSERT 语句的子查询的结果为空表。
在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。 在 FETCH 语句中引用的游标位置处于结果表最后一行之后。
*/ declare CONTINUE HANDLER FOR SQLSTATE ‘02000’ set tmp = 0;
OPEN cur; – 打开游标 FETCH cur INTO tmp; – 游标向下走一步
WHILE(tmp != 0) DO
select tmp; – 将tmp打印出来,会发现tmp就像一个指针,一开始指向第一行,游标走一步,则指向下一行记录
UPDATE users
SET student_ID = tmp + 100 WHERE student_ID = tmp;
FETCH cur INTO tmp; END WHILE;
CLOSE cur; – 关闭游标
END