一个简单的实例创建存储过程,触发器,用光标在Navicat(图文)
首先,首先建立两个表(用户和数字),具体设计如下所示。
2。存储过程
编写一个将数据插入到用户表中的存储过程,创建过程如下:
代码如下
开始
#常规体去这里…
声明N bigint;
设置n=201121029684;
而n=201121029694
做
插入用户(student_id)值(N);
设置n=n + 1;
结束的时候;
结束
在执行存储过程之后,您可以看到用户表中的数据如下所示:
整个存储过程的编译完成了,当然,这只是一个非常简单的示例,仅供入门参考。
3、触发器
在我们编写触发器之前,首先清空用户的数据。
截断表用户;
现在我们有了两个表,我要做的事情是,当我向用户插入数据时,数字相应地发生变化:
例如,在数字表中有一个初始数据,id = 1,数字= 0;
当我向用户插入数据时,数字表中的数值字段被1触发,也就是记录用户的数量。
下面我们来实现这个小函数。
右击用户表,选择设计表
选择触发选项
开始
更新号码
设置数字=(从用户中选择计数(*));
终点
保存后,将新数据添加到用户表中,并检查数据的编号。您将神奇地发现数据表中的数据也发生了变化。自己动手。
ps:存储过程要求程序员执行自己,触发器,顾名思义,自动触发。
4。光标的使用
现在我要做的是增加100的所有student_id领域,只是表明下游使用标准通过这个例子。
创建一个存储过程并创建一个方法来引用上面的步骤:
开始
#常规体去这里…
申报TMP bigint默认0;
声明游标CUR选择student_id从用户定义的光标;
*
02000下列异常之一发生:
对SELECT INTO语句或INSERT语句的子查询的结果是一个空表。
搜索更新或删除语句中标识的行数为零。
提取语句中引用的游标位置位于结果表的最后一行之后。
* /
声明继续SQLSTATE '02000'set TMP = 0处理程序;
打开游标;打开游标
将当前消息输入到TMP中;光标向下一步
而(TMP)!= 0)
做
选择TMP;打印出TMP,发现TMP就像一个指向第一行的指针,光标走一步,指向下一行。
更新用户
集student_id =川芎嗪+ 100
在student_id = TMP;
把当前消息输入TMP;
结束的时候;
关闭光标;关闭光标
结束
在执行上面的存储过程时,您会发现用户中的数据已经按照您的意愿进行了更改。