第四节 视 图 (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子句
指出的主变量中去。
|