嵌入式SQL

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语句

  1. 说明游标

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

  1. 打开游标

EXEC SQL OPEN<游标名>;

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

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

  1. 关闭游标

EXEC SQL CLOSE<游标名>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值