数据库应用技术 嵌入式SQL简介

第3章 结构化查询语言SQL
3
嵌入式SQL的可执行语句
• 游标:在嵌入式SQL中,把存放查询结果的区域及其相应的 数据结构或者指示已取元组位置的指示器称为游标。 • 游标操作语句:
定义游标语句: EXEC SQL DECLARE <游标名> CURSOR FOR <SELECT语句>; 打开游标语句: EXEC SQL OPEN <游标名> 推进游标语句: EXEC SQL FETCH <游标名> INTO <宿主变量1>,<宿主变量2>, ... ; 关闭游标语句: EXEC SQL CLOSE <游标名> ;
第3章 结构化查询语言SQL
4
不用游标的DML语句
• 查询结果为单个元组的SELECT语句:
EXEC SQL SELECT <目标列> INTO <宿主变量1>,<宿主变量2>,... FROM <基本表名或视图名> [WHERE <条件表达式>];
• 功能:从指定的基本表或视图中找到符合条件的元组,并把 查询结果存放到指定的宿主变量中。 • 注意:
EXEC SQL DECLARE student CURSOR FOR SELECT 学号,姓名,年龄,性别,系别 FROM S WHERE 系别=:dept; EXEC SQL OPEN student; while <条件表达式> {EXEC SQL FETCH student INTO :sno,: sname,: sage,:ssex,: department ; ......;} EXEC SQL CLOSE student ;
嵌入式SQL简介
• SQL的两种使用方式:
自含式 嵌入式
• 将SQL嵌入到宿主语言中使用必须解决的问题:
如何区分宿主语言的语句和SQL的语句,并能将嵌入有 SQL的宿主语言源程序编译成为可执行代码。 宿主语言与数据库管理系统之间如何进行通信,使得 SQL语句中能够使用宿主语言的变量。 如何协调宿主语言的单记录处理方式和SQL集合处理方 式之间的差异。 如何进行宿主语言与SQL之间数据类型的转换。
第3章 结〖例3-34〗根据宿主变量givensno的值在基本 表S中查询该学生的姓名、性别、年龄和系 别。
EXEC SQL SELECT 姓名,年龄,性别,系别 INTO :sname,:sage,::ssex,department FROM S WHERE S.学号=: givensno;
〖例3-36〗根据宿主变量dept中所给出的系名, 删除该系所有学生在基本表SC中的选课记录。
EXEC SQL DELETE FROM SC WHERE : dept= (SELECT 系别 FROM S WHERE S.学号=SC.学号);
第3章 结构化查询语言SQL
8
不用游标的DML语句举例
〖例3-37〗把一名新生的记录插入基本表S中, 该生的简况由一组宿主变量 givensno sname、 sage、ssex、 department给出。
11
采用预处理方式嵌入式SQL的处理过程
第3章 结构化查询语言SQL
12
EXEC SQL INSERT INTO S(学号,姓名,年龄,性别,系别) VALUES(:givensno,: sname,: sage,:ssex,: department )
第3章 结构化查询语言SQL
9
使用游标的DML语句举例
〖例3-38〗根据宿主变量dept中所给出的系名,查询 该系所有学生在基本表S中的全部信息。
第3章 结构化查询语言SQL
1
嵌入式SQL的说明语句
• 为了能够区分C语言的语句和SQL的语句,规定SQL的语句前 面加上标识 “EXEC SQL”,语句的结尾加上分号“;”作 为语句的结束标识。 • C语言和SQL之间的数据通信通过宿主变量来实现。宿主变 量是SQL中能够引用的C语言变量。宿主变量需要使用带有 标识“EXEC SQL”的说明语句说明。在SQL中引用宿主变量 时,在宿主变量前面需加上一个冒号“:”作为标识,以 区别于数据库中的变量(如属性名)。在C语言的语句中, 宿主变量与其他变量同样使用。 • 宿主变量的类型按照C语言的数据类型定义,如果与数据库 中的数据类型不一致,则由数据库管理系统进行转换。对C 语言而言,通常不允许把宿主变量定义为数组或结构类型。
第3章 结构化查询语言SQL
2
嵌入式SQL的说明语句举例
〖例3-33〗在C语言中对SQL用到的宿主变量说 明语句的例子: EXEC SQL BEGIN DECLARE SECTION; char SNO[9]; char NAME[9]; char CNO[6]; float GRADE; EXEC SQL END DECLARE SECTION;
第3章 结构化查询语言SQL
10
嵌入式SQL的处理过程
• 嵌入式SQL的两种实现途径:
扩充宿主语言编译程序的功能 采用预处理的方式
• 预处理的常用方法:由数据库管理系统定义 并实现一批库函数,称为SQL库函数。在预 处理时,把嵌入式SQL语句转换成相应的 SQL库函数的调用。
第3章 结构化查询语言SQL
宿主变量前面要加上前缀标识冒号“:”,以区别于属性名等数据库 中的变量; 宿主变量要在主程序中定义并用SQL的DECLARE语句加以说明。
• 其他不需要使用游标的UPDATE语句、DELETE语句和INSERT语 句。只要按照规定加上前缀标识“EXEC SQL”和结束标识 “;”或“END_EXEC”,并且在引用宿主变量时加上前缀标 识“:”,就能够嵌入C语言或其他宿主语言中使用。
第3章 结构化查询语言SQL
6
不用游标的DML语句举例
〖例3-35〗把基本表S中计算机科学与工程系 学生的年龄加上宿主变量raise的值。
EXEC SQL UPDATE S SET 年龄=年龄+:raise FROM S
WHERE S.系别=‘计算机科学与工程系’;
第3章 结构化查询语言SQL
7
不用游标的DML语句举例
合集下载

嵌入式SQL

嵌入式SQL
嵌入式SQL的概述 的概述 嵌入式 嵌入式SQL语句与主语言之间的通信 嵌入式 语句与主语言之间的通信 游标 动态SQL简介 动态 简介
4.7.1嵌入式 嵌入式SQL的概述 嵌入式 的概述
SQL语言提供了两种不同的使用方式:交互式、嵌入式。 这两种方式细节上有差别,在程序设计的环境下,SQL语句要 做某些必要的扩充。对ESQL,RDBMD一般采用预编译方法处 理即由RDBMS的预处理程序对源程序进行扫描,识别出SQL RDBMS SQL 语句,把它们转换成主语言调用语句,以使主语言编译程序能 识别它,最后由主语言的编译程序将整个源程序编译成目标码。 为了区分SQL语句与主语言语句,需要在所有SQL语句前加前 缀EXEC SQL,其结束标志随主语言的不同而不同。
1.SQL通信区 通信区
SQL语句执行后,DBMS反馈给应用程序若干信息主要包括 描述系统当前工作状态和描述运行环境。
这些信息将送到SQL通信区SQLCA中,应用程序从SQLCA中取出这 些状态信息,据此决定接下来执行的语句。
SQLCA的内容与所执行的SQL语句有关,与该SQL语句的 执行情况有关
使用游标的步骤:
说明游标 打开游标 移动游标指针,然后取当前记录 关使用 )说明游标,使用DECLARE语句定义游标。 语句定义游标
语句格式 EXEC SQL DECLARE <游标名> CURSOR FOR <SELECT语句>; 注意:是一条说明性语句,这时DBMS并不执行SELECT指定的 DBMS SELECT 查询操作。
...... EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; ...... /* 说明主变量 SORTKINDID,HID,HNAME,HPRICE*/ EXEC SQL END DECLARE SECTION; ...... GETS(SORTKINDID); /* 为主变量SORTKINDID赋值 */ ...... EXEC SQL DECLARE PC CURSOR FOR SELECT ID, NAME, PRICE FROM PRODUCT WHERE SORTKIND_ID =: SORTKINDID; /* 说明游标 */

嵌入式SQL

嵌入式SQL

嵌入式SQL嵌入式SQL语言把SQL语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。

这种方式下使用的SQL语言称为嵌入式SQL (Embedded SQL),而嵌入SQL的高级语言称为主语言或宿主语言。

1.1 嵌入式SQL的一般形式对宿主型数据库语言SQL,DBMS可采用两种方法处理,一种是预编译,另一种是修改和扩充主语言使之能处理SQL语句。

目前采用较多的是预编译的方法。

即由DBMS的预处理程序对源程序进行扫描,识别出SQL语句。

把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。

在嵌入式SQL中,为了能够区分SQL语句与主语言语句,所有SQL语句都必须加前缀EXEC SQL.。

SQL语句的结束标志则随主语言的不同而不同。

例如在PL/1和C中以分号(;)结束;EXEC SQL <SQL 语句> ;在COBOL中以END-EXEC 结束;EXEC SQL < SQL 语句> END-EXEC例如一条交互形式的SQL语句:DROP TABLE Student ;嵌入到C程序中,应写成:EXEC SQL DROP TABLE Student ;嵌入SQL语句根据其作用的不同,可分为可执行语句和说明性语句两种。

可执行语句又分为数据定义,数据控制,数据操纵三种。

在宿主程序中,任何允许出现可执行的高级语言语句的地方,都可以写可执行SQL语句;任何允许出现说明型高级语言语句的地方,都可以写说明性SQL语句。

1.2 嵌入式SQL语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制程序流程。

这时程序中会含有两种不同计算模型的语句,一种是描述性的面向集合的SQL语句,一种是过程性的高级语言语句,它们之间应该如何通信呢?数据库工作单元与源程序工作单元之间的通信主要包括:(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此信息控制程序流程,主要用SQL通信区(SQL Communication Area ,简称SQLCA)实现;(2)主语言向SQL语句提供参数,主要用主变量实现;(3)将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。

第8章(1)__嵌入式SQL

第8章(1)__嵌入式SQL

(二)使用游标的SQL语句
• 下列情况必须使用游标 • 查询结果为多条记录的SELECT 语句 • CURRENT形式的UPDATE语句 • CURRENT形式的DELETE语句
• 使用游标的步骤 1. 说明游标 2. 打开游标
3.推进游标指针并取当前记录
4. 关闭游标 5.释放游标
1. 说明游标
• 游标
– 游标是系统为用户开设的一个数据缓冲区,存放 SQL语句的执行结果 – 每个游标区都有一个名字 – 用户可以用SQL语句逐一从游标中获取记录,并赋 给宿主变量,交由主语言进一步处理
(一)不需游标的SQL语句 • 说明性语句
• 数据定义语句
• 数据控制语句
}
最简单的一类语句,不需返回 结果,不使用主变量,在主语 言中只需加前缀EXEC SQL和 语句结束符即可。
• 语句: DEALLOCATE cursor_name
例1.查询结果为多条记录的SELECT语句 查找由主变量DEPT中给出的某个系的全体学生信息
EXEC 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;
第八章 数据库编程
一.SQL的使用方式
1、交互式:在终端上每输入一条SQL语句,系统立即执行,
然后等待用户输入下一条语句。
2、嵌入式(嵌入到某种主语言中使用): 宿主语言负责:运算、处理、流程控制等 SQL负责:数据库操作

嵌入式SQL

嵌入式SQL

嵌入式SQL一、嵌入式SQL 简介嵌入式SQL(英文: Embedded SQL)是一种将SQL 语句直接嵌入到像C 、C++、JA V A 等程序设计语言中的方法。

借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。

在这一方法中,将包含SQL 语言的程序设计语言成为称为宿主语言,简称主语言。

二、嵌入式SQL 的编写流程注:由于嵌入式SQL 的主语言有很多,关系型数据库也有很多,由于时间有限,我就不一一阐述了,这里我只以C 语言和Oracle 数据库为例进行说明,有兴趣的同学可以研究一下相关内容。

1.编写pc 源程序(包含SQL 语句的程序);2.使用Oracle 提供的预编译工具ProC.exe 将内嵌的SQL 语句转换为对Oracle 运行库函数( SQLLIB ) 的调用,并生成C 源代码文件;3.使用C /C++编译工具编译C/C++源文件,生成目标文件;4.使用C/C++链接工具生成可执行文件;5.运行可执行文件。

三、主语言与SQL 语句通信原理将SQL 嵌入到高级语言中混合编程,SQL 语句负责操作数据库,高级语言负责控制程序流程。

这时候程序中含有两种不同计算模型的语句,它们之间如何进行通信呢?1.SQL 语句如何向主程序传递执行状态信息?编写包含SQL 语句的程序***.pc 文件生成用RDBMS 提供的预编译工具编译***.c 文件嵌入式SQL 编写流程例如:在C语言中有这么一个功能需求,如果SQL语言执行成功,我就去执行下一行代码,否则我就退出。

这时就需要知道SQL语句的执行状态了。

在嵌入式SQL语言中,SQL语句是通过SQLCA(SQL通信区)向主程序传递其执行状态的,SQLCA里面有一个变量SQLCODE,根据这个变量,就可以知道SQL语句的执行状态。

如sqlca.sqlcode = 0 表明SQL语句执行成功;sqlca.sqlcode=1403,代表查询语句没有返回值;对于上面的案例,我们可以这样做:执行select * from student;If(sqlca.sqlcode ==0){Printf(“执行成功”);}else{Exit(0);}2.SELECT语句返回的结果怎么交给主程序,主程序如何向SQL语句传递参数。

嵌入式sql 简单名词解释 -回复

嵌入式sql 简单名词解释 -回复

嵌入式sql 简单名词解释-回复
嵌入式SQL是指在高级语言的源程序中嵌入SQL语句,实现高级语言与SQL语言的混合编程。

这种方式可以使程序员用熟悉的高级语言来编写应用程序的控制部分,而用SQL来处理数据定义和数据操作等与数据库有关的操作。

嵌入式SQL的使用步骤一般如下:
1. 预编译:将包含嵌入式SQL的高级语言源程序进行预编译,生成一个新的源程序。

2. 编译:对预编译后的源程序进行编译,生成目标代码。

3. 连接:将目标代码和数据库管理系统提供的函数库进行连接,生成可执行文件。

嵌入式SQL的优点包括可以充分利用高级语言的功能,提高程序的效率和可读性,同时又能利用SQL的强大功能进行数据库操作。

嵌入式SQL的应用

嵌入式SQL的应用

SQL语句可以单独在数据库系统本身中执行,但如果运用在其他编程工具所编制的程序中,一般不能单独执行,而要把SQL语句嵌入到高级语言(如易语言)中使用,通过高级语言的命令和方法来调用之,此时SQL称为嵌入式SQL。

调用SQL语句的程序称为宿主程序,在易语言中一般是把SQL语句作为宿主程序的唯一参数来直接处理。

嵌入式SQL在使用上有一些规定,在易语言中目前的版本规定如下:⑴、在程序中要区分SQL语句和宿主语言的语句。

在易语言中好区分,因为SQL语句形式是英文的,而易语言是中文的,但在实际应用时仍然有可能会混乱,所以易语言要把SQL语句转化为文本型才能调用,即嵌入式SQL语句两边要用双引号来标示。

⑵、允许SQL语句使用宿主程序的变量,但使用时要将宿主程序的变量跟外部数据库中表格的字段名区别开来,区别方法如下:①、在易语言中要将变量类型转化为文本型变量才能被SQL文本相加使用,比如下面的例子中有一个叫“数字1”的整数类型变量,插入到SQL文本中是这样表达:外部数据库1.查询(“select * from chj where ” +组合框1.内容+“=” +到文本(数字1))②、包含字段名的SQL文本两边加双引号,变量名不能在双引号内,如上例。

⑶、要将字段名跟字段值区别开来,区别方法如下:①、对于文本类型的字段,在其字段值两边要加上“''”号标示其文本值,代表语法是:字段名称=…文本值‟。

如下:外部数据库1.查询(“select * from chj where 姓名=''山大王''”)又如下面“查找编辑框.内容”中的字段值是文本型,嵌入式SQL语句如下:外部数据库1.查询(“select * from chj where 姓名==” +“''” +查找编辑框.内容+“''”)②、对于数字类型的字段,在SQL语句中表示其字段值,两边不加符号标示,代表语法是:字段名称=数字值。

嵌入式SQL简介

第3章 结构化查询语言SQL
5
不用游标的DML语句举例 不用游标的DML语句举例
〖例3 34〗根据宿主变量givensno的值在基本 〖例3-34〗根据宿主变量givensno的值在基本 表S中查询该学生的姓名、性别、年龄和系 别。
EXEC SQL SELECT 姓名,年龄,性别,系别 姓名,年龄,性别, INTO :sname,:sage,::ssex,department sname, sage,::ssex, FROM S WHERE S.学号=: givensno; S.学号=: givensno;
第3章 结构化查询语言SQL
8
不用游标的DML语句举例 不用游标的DML语句举例
〖 例 3 - 37 〗 把一名新生的记录插入基本表S 中 , 37〗 把一名新生的记录插入基本表 S 该生的简况由一组宿主变量 givensno sname、 sname、 sage、ssex、 department给出。 sage、ssex、 department给出。
第3章 结构化查询语言SQL
6
不用游标的DML语句举例 不用游标的DML语句举例
〖 例 3 - 35 〗 把基本表S 中计算机科学与工程系 35〗 把基本表 S 学生的年龄加上宿主变量raise的值。 学生的年龄加上宿主变量raise的值。
EXEC SQL UPDATE S SET 年龄=年龄+:raise 年龄=年龄+: FROM S WHERE S.系别=‘计算机科学与工程系’; S.系别=‘计算机科学与工程系’;
第3章 结构化查询语言SQL
10
嵌入式SQL的处理过程 嵌入式SQL的处理过程
• 嵌入式SQL的两种实现途径: 嵌入式SQL的两种实现途径:

嵌入式SQL及动态SQL


2. 嵌入式SQL语句的基本形式
首先在主语言中使用SQL语言,必须将主语言的语句同SQL语句区分开来。区分 的方法是在SQL语句最后以分号“;”作为语句结束符。这样,以PowerBuilder 作为主语言的嵌入式SQL语句的一般形式为: SQL_statement; 例如:delete from wpkc_gysdjb;
嵌入式SQL 嵌入式
嵌入式SQL语句的具体使用方法:
2) 打开游标 语句语法: open cursor_name; 语法说明: (1)打开游标实际上是执行相应的select语句,并把指定表中的所有满足查询条件 的记录放到内存缓冲区中。 (2)执行了“打开游标”后,游标处于活动状态,指针指向查询结果集的第一条记 录。 3) 提取游标中的记录 语句语法: fetch cursor_name into host_variable[,...n]; 语法说明: (1)提取游标,是指从缓冲区中将指针指向的当前记录取出来,送至主变量供主语 言进一步处理,同时移动游标指针。 (2)在fetch中的主变量个数及数据类型应与定义游标时的select语句目标列一致。 (3)由于执行fetch语句只能提取出结果集中的一条记录,因此fetch语句通常用在主 语言的一个循环结构中,通过循环执行fetch语句逐条取出结果集中的记录进行处 理。 4) 关闭游标 语句语法: close cursor_name;
但是由于sql语言具有面向集合非过程化的特点主要负责对数据库中数据的存取操作在用户界面及控制程序流程方面的功能较弱因此sql语言仅仅只在交互环境中执行很难满足应用需求
嵌入式SQL及动态 及动态SQL 嵌入式 及动态
嵌入式SQL 嵌入式
SQL语言是一种结构化查询语言,在许多数据库系统环境中,一般是作为独立语 言,由用户在交互环境下使用。 但是由于SQL语言具有面向集合、非过程化的特点,主要负责对数据库中数据的 存取操作,在用户界面及控制程序流程方面的功能较弱,因此SQL语言仅仅只在交 互环境中执行很难满足应用需求。而高级语言正好相反,它是一种过程化的、与运 行环境有关的语言,具有较强的用户界面设计及控制程序流程的能力。 由于上述原因,出现了SQL语言的另一种执行方式,就是将SQL语言嵌入到某种 高级语言中使用,以便发挥SQL语言和高级语言的各自优势。在这种方式下使用的 SQL语言称为嵌入式SQL(Embedded SQL),而嵌入SQL语句的高级语言称为主 语言。 在这种混合编程模式下,高级语言需要和SQL语句进行信息交换,两者之间的通信 SQL 内容如下: 1)SQL语句将执行状态信息传递给主语言,主语言根据SQL语句的执行状态来控制 程序流程。向主语言传递SQL执行状态信息,主要通过SQL通信区(SQL Communication Area,简称为SQLCA)实现。SQLCA是一个数据结构,其中有一个 返回执行状态的系统变量sqlcode,主语言在执行完一条SQL语句后均应测试sqlcode 的值,以决定该SQL语句的执行情况并做相应处理。 2)主语言需要提供一些变量参数给SQL语句,方法是在主语言中定义“主变 量”(Host Variable),通过主变量向SQL语句提供参数。 3)SQL语句需要将查询数据库的结果返回给主语言,以便主语言做进一步的处理。 如果SQL语句返回的是单条记录,则可以通过主变量将结果返回到主语言中;如果 SQL语句返回的是多条记录,则可以使用游标将结果返回到主语言中。

3.7 嵌入式SQL概述


对宿主型数据库语言SQL,DBMS可采 , 对宿主型数据库语言 可采 用两种方法处理: 用两种方法处理: 一种是预编译,另一种是修改和扩充主 一种是预编译, 语言使之能处理SQL语句。 语句。 语言使之能处理 语句
目前采用较多的是预编译的方法。 目前采用较多的是预编译的方法。 即由DBMS的预处理程序对源程序进行 即由 的预处理程序对源程序进行 扫描,识别出SQL语句,把它们转换成主 语句, 扫描,识别出 语句 语言调用语句,以使主语言编译程序能识 语言调用语句, 别它, 别它,最后由主语言的编译程序将整个源 程序编译成目标码。 程序编译成目标码。
如下一条交互形式的SQL语句: 语句: 如下一条交互形式的 语句 DROP TABLE Student; 嵌入到C程序中,应写作: 嵌入到 程序中,应写作: 程序中 EXEC SQL DROP可分 语句根据其作用的不同, 嵌入 语句根据其作用的不同 为可执行语句和说明性语句两类。 为可执行语句和说明性语句两类。 可执行语句又分为数据定义、数据控制、 可执行语句又分为数据定义、数据控制、 数据操纵三种。 数据操纵三种。
一、SQL通信区 SQL通信区
SQL语句执行后,系统要反馈给应用程 语句执行后, 语句执行后 序若干信息, 序若干信息,主要包括描述系统当前工作 状态和运行环境的各种数据, 状态和运行环境的各种数据,这些信息将 送到SQL通信区 通信区SQLCA中。 送到 通信区 中 应用程序从SQLCA中取出这些状态信 应用程序从 中取出这些状态信 据此决定接下来执行的语句。 息,据此决定接下来执行的语句。
main () { EXEC SQL DECLARE C1 CURSOR FOR .........(3) 游标操作(定义游标) 游标操作(定义游标) SELECT tit_id, tit, roy FROM TITLES; /* 从titles表中查询 tit_id, tit, roy */ 表中查询 EXEC SQL OPEN C1; ....................... (4) 游标操作(打开游标) 游标操作(打开游标) for (; ;) { EXEC SQL FETCH C1 INTO :title_id, :title, :royalty; (5) 游标操作(推进游标指针并 游标操作( 将当前数据放入主变量) 将当前数据放入主变量)

SQL语言:嵌入式SQL知识笔记

SQL语言:嵌入式SQL知识笔记1、概念SQL提供了将SQL语句嵌入到某种高级语言中的使用方式,通常采用预编译的方法将SQL语句嵌入高级语言中。

采用的方法由DBMS 的预处理程序对源程序进行扫码、识别出SQL语句,把它们转换为主语言调用语句,这样可以让主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。

2、SQL嵌入主语言涉及的几个问题区分主语言语句与SQL语句:通常在SQL语句前加前缀EXEC SQL,结束标志会跟着主语言不同而不同。

主语言工作单元与数据库工作单元的通信机制1、SQL通信区:向主语言传递SQL语句执行状态信息,使主语言能够根据此信息控制程序流程。

2、主变量:也成为共享变量。

主语言向SQL语句提供参数主要通过主变量,主变量由主语言的程序定义,并用SQl的DECLARE语句说明。

比如C语言中用法:•••••exec sql begin delcare section char sno[4],cno[3]int grade;char sqlstate[7]exec sql end declare section根据共享变量givesno值查询学生关系students 中的学生姓名、年龄、性别•••exec sql select sname,age,sex into:Msno,:Mcno;givensno from studnets where sno:Msno;3、游标SQl语言主要是面向集合的,一条SQL语句可产生或处理多条记录。

而主语言是面向记录的,一组主变量一次只能放一条记录,因此引入游标,通过移动游标指针来决定获取那一条记录。

3.1 定义游标:•••exec sql declare<游标> cursor for <select查询语句>endexec3.2 打开游标•exec sql open <游标名> endexec该语句执行游标定义中的select语句,同时游标处于活动状况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档