图4-12-1:嵌入式SQL的处理过程
在宿主语言中,一个典型的嵌入式SQL的查询过程如下所示:
⑴定义游标:EXEC SQL
declare c cursor for
select customer-name from customer
END-SQL
⑵打开游标:EXEC SQL open c END-SQL
⑶取 数 据:EXEC SQL fetch c into :v END-SQL
⑷关闭游标:EXEC SQL close c END-SQL
下面是一段带有嵌入式SQL的C程序:
………
………
EXEC SQL INCLUDE SQLCA;..................⑴定义SQL通信区
EXEC SQL BEGIN DECLARE SECTION;..........⑵主变量说明开始
CHAR Sno(5);
CHAR Cno(3);
INT Grade;
EXEC SQL END DECLARE SECTION;............主变量说明结束
main()
{
EXEC SQL DECLARE C1 CURSOR FOR........⑶游标操作(定义游标)
SELECT Sno, Cno, Grade
FROM SC; /*从表中查询Sno, Cno, Grade*/
EXEC SQL OPEN C1;.....................⑷游标操作(打开游标)
for(; ;)
{
EXEC SQL FETCH CI INTO :Sno, :Cno, :Grade;
......⑸游标操作(推进游标指针
并将当前数据放入主变量)
if (sqlca.sqlcode <> SUCCESS)
......⑹利用SQLCA中的状态信息决
定何时退出循环
break;
print("Sno: %s, Cno: %s, Grade: %d\n", Sno, Cno, Grade);
/*打印查询结果*/
}
EXEC SQL CLOSE C1;..............⑺游标操作(关闭游标)}