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

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

第四节 视 图    (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)
3. 游标(cursor)
    SQL语言与主语言具有不同数据处理方式。SQL语言是面向集合的,一条SQL语句原则上可以产生或处理
多条记录,主语言是面向记录的,一组主变量一次只能存放一条记录。仅使用主变量并不能完全满足SQL语
句向应用程序输出数据的要求。嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式。
     游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户
可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
3.7.3 不用游标的SQL语句
    不用游标的SQL语句的种类:说明性语句;数据定义语句;数据控制语句;查询结果为单记录的SELECT
语句;非CURRENT形式的UPDATE语句;非CURRENT形式的DELETE语句;INSERT语句 。
一、说明性语句
    说明性语句是专为在嵌入式SQL中说明主变量、SQLCA等而设置的,说明主变量:
    1. EXEC SQL BEGIN DECLARE SECTION;
    2. EXEC SQL END DECLARE SECTION;
    这两条语句必须配对出现,相当于一个括号,两条语句中间是主变量的说明,说明SQLCA。
    3. EXEC SQL INCLUDE SQLCA。
二、数据定义语句
    例 建立一个“学生”表Student
        EXEC SQL CREATE TABLE Student
        (Sno CHAR(5) NOT NULL UNIQUE,
        Sname CHAR(20),
        Ssex CHAR(1),
        Sage INT,
        Sdept CHAR(15));
    数据定义语句中不允许使用主变量。
    例:下列语句是错误的 EXEC SQL DROP TABLE :table_name;
三、数据控制语句
    例 把查询Student表权限授给用户U1
        EXEC SQL GRANT SELECT ON
        TABLE Student TO U1;
四、查询结果为单记录的SELECT语句
    语句格式:
        EXEC SQL SELECT [ALL|DISTINCT]<目标列表达式> [,<目标列表达式>]...  
        INTO <主变量>[<指示变量>] [,<主变量>[<指示变量>]]...
        FROM <表名或视图名>[,<表名或视图名>] ...
        [WHERE <条件表达式>]
        [GROUP BY <列名1> [HAVING <条件表达式>]]
        [ORDER BY <列名2> [ASC|DESC]];
    对交互式SELECT语句的扩充, 多了一个INTO子句。把从数据库中找到的符合条件的记录,放到INTO子句
指出的主变量中去。

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