9.不用游标的DML语句
不需要游标的DML语句有:查询结果为单记录的SELECT语句UPDATE(除了CURRENT形式的UPDATE)语句DELETE(除了CURRENT形式的DELETE)语句INSERT语句
(1)查询结果为单记录的SELECT语句这类语句的一般格式是:(主语言为PL/1)EXEC SQL SELECT目标列INTO主变量[空值标志]FROM基本表(或视图)[WHERE条件表达式];SELECT语句从数据库中找到符合条件的记录,把结果放到主变量中。
(2)UPDATE语句
(3)DELETE语句
(4)INSERT语句
10.使用游标的DML语句
一般情况下SELECT语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集合操作转换为单记录处理。与游标有关的语句有四个:
(1)定义游标。游标是与某一查询结果相联系的符号名。用DECLARE语句定义。这是一个说明语句。与游标相对应的SELECT语句这时并不执行。
(2)打开(OPEN)游标。打开游标语句使游标处于活动状态。与游标相应的查询语句被执行。游标指向查询结果集中的第一个记录之前。
(3)推进(FETCH)游标。把游标向前推进一个记录,并把游标指向的当前记录中的字段值取出,放到INTO子句后相应的主变量中。FETCH语句常常用于循环,以借助主语言功能逐一处理结果集中的数据。
(4)关闭(CLOSE)游标。关闭游标,使它不再和原来的查询结果相联系。关闭了的游标可以再次被打开,与新的查询结果集相联系。使用CURRENT形式的UPDATE和删除语句应注意:
(1)若游标定义中的SELECT语句带有UNION或ORDER BY子句,或者这个SELECT语句相当于定义了一个不可更新的视图,则不能用这两个更新语句。
(2)若使用CURRENT形式的UPDATE语句,则游标定义中要包括FOR UPDATE子句,指出更新的字段(SET子句中使用的字段)。因此,游标定义语句的一般格式为:EXEC SQL DECLARE游标名CURSOR FOR子查询UNION子查询…[FOR UPDATE OF字段名[,字段名]…|ORDER-BY-子句];
11.SQL的事务处理功能
(1)事务处理的概述所谓事务(Transaction)是指一系列动作的组合,这些动作被当作一个整体来处理。这些动作或者相继都被执行,或者什么也不做。在数据库中,一个动作是指一个SQL语句。事务是一组SQL语句组成的一个逻辑单位。要么这些SQL语句全部被按顺序正确执行,要么在某SQL语句执行失败时,按照用户要求,取消已执行的SQL语句对数据库中数据的修改。或者要么事务中SQL语句都被正确执行,完成该事务对数据库中数据的所有操作;或者要么相当于一条SQL语句也未执行,数据库数据未做任何改动。
(2)SQL语言的事务处理语句SQL语言有3条语句用于事务处理,它们是:
(1)Commit语句,对于正确执行了的事务进行提交,进行提交即对数据库中数据的修改永久化。同时还释放事务和封锁,标志该事务结束。
(2)Save point语句,定义事务中的一个回滚保留点,它是事务恢复时的一个标记点。
(3)rollback语句,无论事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全部修改,要么取消至某个指定回滚点后对数据库的全部修改。释放自保留点之后的全部表或行的封锁(没有保留点,相当于回滚到事务开始处,终止该事务)。事务的恢复(回滚)是根据事务执行前保存下的当时数据库状态来实现的。一遇到rollback语句,就将数据库中数据恢复到原来的状态,相当于撤消事务中已执行了的SQL语句。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |