第三章 关系数据库标准语言SQL

第一节 第二节 第三节 第四节

第四节 视 图    (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)
    为UPDATE语句说明游标,使用带FOR UPDATE OF <列名>短语的DECLARE语句。语句格式:
        EXEC SQL DECLARE <游标名> CURSOR
        FOR <SELECT语句> FOR UPDATE OF <列名>;
        FOR UPDATE OF <列名>短语用于指明检索出的数据在指定列上是可修改的,以便DBMS进行并发控制。
    为DELETE语句说明游标,使用带FOR UPDATE短语的DECLARE语句。语句格式:
        EXEC SQL DECLARE <游标名> CURSOR
        FOR <SELECT语句> FOR UPDATE;
        FOR UPDATE短语提示DBMS进行并发控制,修改或删除当前记录。语句格式:
        <UPDATE语句> WHERE CURRENT OF <游标名>
        <DELETE语句> WHERE CURRENT OF <游标名>
    WHERE CURRENT OF <游标名>子句表示修改或删除的是该游标中最近一次取出的记录。当游标定义中的
SELECT语句带有UNION或ORDER BY子句时,或者该SELECT语句相当于定义了一个不可更新的视图时,不能使
用CURRENT形式的UPDATE语句和DELETE语句。
3.7.5 动态SQL简介
    静态嵌入式SQL,用户可以在程序运行过程中根据实际需要输入WHERE子句或HAVING子句中某些变量的值。
语句中主变量的个数与数据类型在预编译时都是确定的,只有是主变量的值是程序运行过程中动态输入的。
静态SQL语句提供的编程灵活性在许多情况下仍显得不足,不能编写更为通用的程序。
    例 对SC:任课教师想查选修某门课程的所有学生的学号及其成绩,班主任想查某个学生选修的所有课
程的课程号及相应成绩,学生想查某个学生选修某门课程的成绩, 即:查询条件是不确定的,要查询的属性
列也是不确定的。
二、动态SQL
1. 什么是动态嵌入式SQL?动态SQL方法允许在程序运行过程中临时 “组装” SQL语句。
2. 应用范围:在预编译时下列信息不能确定时;SQL语句正文;主变量个数;主变量的数据类型;SQL语句
中引用的数据库对象(列、索引、基本表、视图等)。
3. 动态SQL的形式:语句可变, 临时构造完整的SQL语句;条件可变;WHERE子句中的条件;HAVING短语中的
条件;数据库对象、查询条件均可变;SELECT子句中的列名;FROM子句中的表名或视图名;WHERE子句中的
条件;HAVING短语中的条件。
4. 常用动态SQL语句:EXECUTE IMMEDIATE;PREPARE;EXECUTE;DESCRIBE;使用动态SQL技术更多的是涉及
程序设计方面的知识,而不是SQL语言本身。

吉林大学网络教育学院 版权所有