您当前的位置:《数据库原理及应用》听课笔记:26
《数据库原理及应用》听课笔记:26
~宿主变量的类型定义时按主语言类型及格式定义(它就是一个主语言变量)
~宿主语言与数据库类型不一致时,可按约定由DBMS做出转换。但实现时往往对宿主语言数据类型加以限制。如C语言不准用户将宿主变量定义为数组或结构类型。
SQLCA(SQL通信区)消息的传递
~它是一个全局变量,由系统定义,供应用程序与DBMS之间通信用。
~使用前只需在嵌入的可执行SQL语句前加INCLUDE语句,不必用户说明。
~格式如下:
EXEC SQL INCLUDE SQLCA;

~SQLCA中有一系列分量,供DBMS与应用程序之间传消息或标识SQL语句执行状态,以SQLCA中的一个分量SQLCODE为例,它是一个整型数,供DBMS向应用程序报告SQL语句执行情况:每条SQL语句执行后DBMS都返回一个SQLCODE代码,
一般:
0:正常执行完毕。
正数:已执行,但有异常,如等于100时为无数可取,表示可能:
1.数据库中无满足条件的数据。
2.被查询数据已被取完。
负数:因出错未执行,具体值表示错误类型。

指示变量
~宿主变量不能直接接受空缺符(NULL),凡所取值可为缺省空时,宿主变量后应跟一指示变量。
~指示变量也是宿主变量,短整数;
~指示变量为负表示宿主变量值为空缺值(NULL),否则,不是NULL。
所有SQL语言用到的宿主变量,除系统定的外,都需说明,格式:--定义
开头行:
EXEC SQL BEGIN DECLARE SECTION;
结束行:
EXEC SQL END DECLARE SECTION;
中间为宿主变量类型说明部分,与C语言一样了
例:
EXEC SQL BEGIN DECLARE SECTION;
char SNO[7];
char GIVENSNO[7]; //GIVENSNO和GIVENCNO干什么用?
char CNO[6];
char GIVENCNO[6];
float GRADE;
short GRADEI;
EXEC SQL END DECLARE SECTION;
~SNO,CNO,GRADE宿主变量与SC列名相同,可以。
~GRADEI指示变量,只有与GRADE连用才有意义。
~按C语言说明,与SQL的DDL部分有区别。
三、
讨论嵌入SQL的可执行语句,
包括:
DDL,QL,DML,DCL语句。以及进入数据库系统的CONNECT语句及控制事物结束的语句。
语句本身格式与ISQL基本一致,只不过因嵌入需要增加一些语法成分。
CONNECT语句格式
EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;
~其中:uid,pwd均为宿主变量,
uid表示用户标识符。pwd该用户口令。
它们均应在CONNECT语句前由宿主语言赋值。
~执行本语句成功后,才能执行事务中的其他语句。
~执行成功与否可由SQLCODE判别。

收藏状态
收藏本课程的同学
相关课程