这里有新鲜出炉的精品教程,程序狗速度看过来!
NavicatTM 是一套快速、可靠并价格相宜的资料库管理工具,大可使用来简化资料库的管理及降低系统管理成本。它的设计符合资 料库管理员、开发人员及中小企业的需求。 Navicat 是以直觉化的使用者图形介面所而建的,让你可以以安全且简单的方式建立、组织、存取并共用资讯。
这篇文章主要介绍了 navicat 中创建存储过程、触发器和使用游标的简单实例, 需要的朋友可以参考下
1、建表
首先先建两张表(users 表和 number 表),具体设计如下图:
2、存储过程
写一个存储过程,往 users 表中插入数据,创建过程如下:
代码如下
- 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
执行存储过程后可以看到 users 表中的数据如下:
整个存储过程的编写就完成了,当然这只是一个极为简单的例子,仅供入门参考。
3、触发器
在写触发器之前,我们先把 users 的数据清空
- truncate table users;
现在我们有两个表,我要做的事情就是,当我往 users 中插入数据后,number 中也相应变化:
例如,number 表中有一条初始数据,id=1,num=0;
当我往 users 中插入一条数据后,就触发 number 表中的 num 字段就加 1,也就是记录用户数。
下面我们来实现这个小小的功能。
右击 users 表,选择设计表
选择触发器选项
- begin update number set num = (select count( * ) from users);
- end
保存后,再往 users 表中添加新数据,再查看一下 number 中的数据,你会神奇的发现,number 表中的数据也变了,自己动手试一下吧!
ps:存储过程需要程序员自己去执行,触发器,顾名思义,自动触发。
4、游标使用
我现在想做的是将 student_ID 字段都加上 100,通过这个例子简单展示一下游标的使用。
创建一个存储过程,创建方式参考上面步骤。存储过程代码如下:
- 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
执行上面的存储过程,你会发现,users 中的数据如你所愿的发生了变化。
来源: http://www.phperz.com/article/17/0723/324008.html