嵌入式SQL

mac2024-12-04  25

1嵌入式SQL

嵌入式SQL是指将SQL语言嵌入到程序设计语言中,被嵌入得程序设计语言如C、C++、java等称为宿主语言

预编译:由数据库管理系统得预处理程序队源程序进行扫描,识别出嵌入式SQL语句,把它们转换成主语言调用语句。

SQLCODE:存放每次执行SQL语句后返回的代码

简单得嵌入式SQL编程实例

EXEC SQL BEGIN DECLARE SECTION; char hsno[9]; char hsname[20]; char hssex[2]; int HSage; int NEWAGE; EXEC SQL END DECLARE SECTION; long SQLCODE; EXEC SQL INCLUDE SQLCODE int main(void) { int count 0; char yn; printf("please choose the department name(CS/MA/IS)"); scanf("%s",deptname); EXEC SQL CONNECT TO TEST@localhost:54321 USER "SYSTEM"/"MANAGER"; EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage FROM Student WHERE SDept=:deptname; EXEC SQL OPEN SX; for(;;) {EXEC SQL FETCH SX INTO :Hsno,:HSname;:HSsex,:HSage; if(SQLCA.SQLCODE!=0) break; if(count++=0) printf("\n%-10s%-20s-10s%-10s%","Sno","Sname","Ssex","Sage"); print("-10s%-20s-10s%-10s%d\n",HSno,HSname,HSsex,HSage); printf("UPDATEAGE(y/n)?"); do{scanf("%c",&yn);} while(yn!'N'&&yn!='n'&&yn!='Y'&&yn!='y') if(yn=='y'||yn=='Y') {printf("INPUT NEW AGE:"); scanf("%d",&NEWAGE); EXEC SQL UPDATE Student SET Sage=:NEWAGE WHERE CURRENT OF SX; } EXEC SQL CLOSE SX; EXEC SQL COMMIT WORK; EXEC SQL DISCONNECT TEST; }

当查询得出的某个数据项为空值时,系统自动将相应住变量后面得指示变量置为负值,而不再向该主变量赋值

SQL通信区

EXEC SQL INCLUDE SQLCA

SQLCODE

存放每次执行SQL语句后返回的代码

主变量:

SQL语句中使用的主语言程序变量简称为主变量。

指示变量

指示变量是一个整型变量,用来指示输入的主变量的值或条件,指示变量可以指示输入主变量是否为空值,可以检测输出主变量是否为空值,值是否被截断,当指示变量值为负值的时候,不管主变量值为多少都认为它是NULL

主变量和指示变量前要加 :。 游标

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。

链接数据库

EXEC CONNECT TO TARGET[AS connection-name][USER user_name];

关闭数据库

EXEC SQL DISCONNECT [connection];

使用游标的SQL语句

查询结果为多条记录的SELECT语句

说明游标

EXEC SQL DECLARE<游标名>CURSOR FOR<select语句>;

打开游标

EXEC SQL OPEN<游标名>;

推进游标指针并取当前记录

EXEC SQL FETCH<游标名> INTO <主变量>[<指示变量>]

关闭游标

EXEC SQL CLOSE<游标名>

最新回复(0)