sql基本知识大全第十章

更新时间:2023-08-15 10:20:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

sql基本知识大全

第三章 关系数据库 语言SQL

第八章 数据库编程

嵌入式SQL 存储过程 小结

Spring, 2009. zhaoHaixia.

sql基本知识大全

8.1 嵌入式SQL1、SQL的使用方式交互式:在终端上每输入一条SQL语句,系统立即执行,然后等 待用户输入下一条语句。

自编程式:在实际的DBMS中,都对SQL进行了扩充,增加了条件、循环等控制语句,并提供编程机制。如SQL Server中,用户可以 编写存储过程并调用它。 嵌入式(嵌入到某种主语言中使用): 宿主语言负责:运算、处理、流程控制等 SQL负责:数据库操作Spring, 2009. zhaoHaixia. 2

sql基本知识大全

嵌入式SQL2、嵌入式SQL的处理方式 预编译:由DBMS的预处理程序对源程序进行扫描,识

别出SQL语句,把它们转化成主语言调用语句,以使

主语言编译程序识别它,最后由主语言的编译程序将整个源程序编译成目标码。 修改和扩充主语言使之能处理SQL语句。

Spring, 2009. zhaoHaixia.

sql基本知识大全

嵌入式SQL使用时的问题3、嵌入式SQL使用时的问题 必须解决四个问题: SQL语句与高级语言语句的区分 DB工作单元与程序工作单元的通信 SQL查询结果是集合,高级语言是一个记录, 需协调 两者的数据类型不完全对应或等价

Spring, 2009. zhaoHaixia.

sql基本知识大全

嵌入式SQL使用时的问题

区分(标识SQL语句) 在嵌入式SQL中,必须加前缀以与主语言区别 在PL/1中和C中:EXEC SQL <SQL语句>; 在COBOL中:EXEC SQL <SQL语句>END-EXEC

SQL语句标识用于通知主语言的预编译程 序,将SQL语句转化为等价的主语言语句,然 后再由编译程序形成目标代码。

Spring, 2009. zhaoHaixia.

sql基本知识大全

嵌入式SQL使用时的问题

通信输入主变量:宿主语言赋值,SQL语句引用,插入、修 改、条件子句

SQL语句引用主语言程序变量(称作主变量)

输出主变量:SQL语句赋值,宿主语言引用,得到SQL 的单值结果 主变量的定义:

EXEC SQL BEGIN/END DECLARE SECTION 主变量的使用:在SQL语句之内加冒号:指示变量Spring, 2009. zhaoHaixia. 6

sql基本知识大全

嵌入式SQL使用时的问题 通信

SQL语句执行后,系统反馈信息送到SQL的 通信区 SQLCA 。应用程序据此可决定程序 的执行流程或进行出错处理。 重要的状态指示字段 SQLCODE,其值表示 SQL语句是 否正常执行,异常时返回的是异常代码。

Spring, 2009. zhaoHaixia.

sql基本知识大全

嵌入式SQL使用时的问题 协调

用游标( Cursor )(即位置指针)协调 主语言和SQL语句的处理。 本地内存的一个数据缓冲区,存放SQL语句的执行 结果(元组集合),以协调SQL语句(面向集合) 和宿主语言(面向记录)的处理方式,解决主变量 所不能解决的二者之间的匹配问题; 每个游标都有一个名字,一个指针,通

过宿主语言 的一个循环用 SQL逐一从游标中读取记录,为主变 量赋值.Spring, 2009. zhaoHaixia. 8

sql基本知识大全

嵌入式SQL使用时的问题 数据类型匹配 主语言变量按主语言的类型,格式定义,若与数据 库中的数据类型不一致,则由DBS按实时约定进行 必要转换; 在实现嵌入式SQL时,往往对主语言变量的数据类 型加以适当限制。

Spring, 2009. zhaoHaixia.

sql基本知识大全

有关游标的SQL语句

游标定义语句(DECLARE):说明游标是与某 一查询结果相联系的符号名。EXEC SQL DECLARE SX CURSOR FOR <SELECT语句> END_EXEC

游标打开语句(OPEN):执行游标定义中的查 询语句,并使游标处于活动状态。EXEC SQL OPEN SX END_EXEC

游标推进语句(FETCH):将游标向前推进一 行,并将当前行的值送到共享变量中。EXEC SQL FETCH FROM SX INTO <变量表>END_EXEC

游标关闭语句(CLOSE):关闭游标。EXEC SQL CLOSE SXSpring, 2009. zhaoHaixia. 10

sql基本知识大全

Example例:插入一个学生记录(´S100´,´HH´,´CS´,19)进S表中。… EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; HS# ,HSN,HSD char(8); HSA Integer; EXEC SQL END DECLARE SECTION; …… main() { HS#=´S100´;HSN=´HH´; HSD=´CS´; HAS=19; …... EXEC SQL INSERT INTO S VALUES (:HS# ,:HSN,:HSD,:HSA); if (sqlca.sqlcode <> SUCCESS) Printf(´插入操作不成功!´); …… }Spring, 2009. zhaoHaixia. 11

sql基本知识大全

不需游标的SQL语句4、不需游标的SQL语句 说明性语句 数据定义语句(如建立、删除基本表) 数据控制语句(授权语句) 查询结果为单记录的SELECT语句 非CURRENT形式的UPDATE语句 非CURRENT形式的DELETE语句 INSERT语句Spring, 2009. zhaoHaixia. 12

sql基本知识大全

Example例1、根据主变量GIVENS#的值找该生的信息EXEC SQL SELECT SN,SD, SA INTO :SNAME,:DEPT,:AGE FROM S 查询结果存入 这三个主变量中

WHERE S#= :GIVENS#; 待查的学号存在GIVENS#中注意: 1、如果没有满足条件的记录,则DBMS将SQLCODE的值置为100。 2、如果查询结果有多条记录,则程序出错, DBMS在SQLCODE 返回错误信息。

Spring, 2009. zhaoHaixia.

sql基本知识大全

使用游标的SQL语句5、需要游标的SQL语句 查询结果为多条记录的SELECT语句 CURRENT形式的UPDATE语句 CURRENT形式的DELETE语句

Spring, 2009. zhaoHaixia.

sql基本知识大全

Example例1:查找由主变量DEPT中给出的某个系的全体学生信息。EXEC SQL DECLARE SX CURSOR FOR 定义游标

SELECT S#,SN,SAFROM S WHERE SD=:DEPT; EXEC SQL OPEN SX; 打开游标 推进游标

DO WHILEEXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; …… END; EXEC SQL CLOSE SX; 关闭游标Spring, 2009. zhaoHaixia. 15

sql基本知识大全

ExampleEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT; EXEC SQL OPEN SX; DO WHILE

游标SX 游标SX

S:S#S0 S1 S2 S3 S4 S5 S6 S7

SN SD SA X A B C D E F G MA 18 CS 20 CS 21 MA 19 CI

19 MA 20 CS 22 CI 21

EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; …… END; EXEC SQL CLOSE SX;

假设DEPT中为 ‘CS’

主变量 S# SNAME AGE S1 A 20Spring, 2009. zhaoHaixia. 16

sql基本知识大全

ExampleEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT; EXEC SQL OPEN SX; DO WHILE EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; …… END; EXEC SQL CLOSE SX;

S:S#游标SX S0 S1 S2 S3 S4 S5 S6 S7

SN SD SA X A B C D E F G MA 18 CS 20 CS 21 MA 19 CI 19 MA 20 CS 22 CI 21

主变量 S# SNAME AGE S2 B 2117

假设DEPT中为‘CS’

Spring, 2009. zhaoHaixia.

sql基本知识大全

ExampleEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT; EXEC SQL OPEN SX; DO WHILE

S:S#S0 S1 S2 S3 S4 S5 S6 S7

SN SD SA X A B C D E F G MA 18 CS 20 CS 21 MA 19 CI 19 MA 20 CS 22 CI 21

游标SX

EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; …… END; EXEC SQL CLOSE SX;

主变量 S# SNAME AGE S6 F 2218

假设DEPT中为‘CS’

Spring, 2009. zhaoHaixia.

sql基本知识大全

ExampleEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT; EXEC SQL OPEN SX; DO WHILE EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE;

S:S#S0 S1 S2 S3 S4 S5 S6 S7 游标SX

SN SD SA X A B C D E F G MA 18 CS 20 CS 21 MA 19 CI 19 MA 20 CS 22 CI 21

……END; EXEC SQL CLOSE SX;

主变量 S# SNAME AGE

假设DEPT中为‘CS’

S6

F

2219

Spring, 2009. zhaoHaixia.

本文来源:https://www.bwwdw.com/article/tnxj.html

Top