嵌入式SQL语言手册 > 动态SQL语句 > 方法2:使用PREPARE 和EXECUTE
PREPARE和EXECUTE的例子
下面是一个使用PREPARE和EXECUTE的例子,源程序如下:
例 8-1
/********************************************************
* esql*C 使用EXECUTE和PREPARE的实例*
********************************************************/
#include <stdio.h>
#include <stdlib.h>
void error()
{
/* 对错误情况不予处理,以防止死循环*/
EXEC SQL WHENEVER SQLERROR CONTINUE;
/* 输出错误信息*/
sqlprint();
EXEC SQL ROLLBACK WORK;
exit(1);
}
int main()
{
/*声明宿主数组变量*/
EXEC SQL BEGIN DECLARE SECTION;
char command[80];
char hnum[4];
EXEC SQL END DECLARE SECTION;
long SQLCODE;
/* 对错误情况进行处理 */
EXEC SQL WHENEVER SQLERROR do error();
/*获取动态命令*/
sprintf(command,”UPDATE employee SET grade = grade +1
WHERE empnum = ?”);
/* 连接神通数据库 */
EXEC SQL CONNECT TO sql92test@localhost
USER oscar USING zjuhxy;
/* prepare */
EXEC SQL PREPARE dstmt FROM :command;
while(1)
{
printf(“\n请输入要升一级的员工的empnum(输入‘e’退出更新-小写):”);
scanf(“%s”,hnum);
if (hnum[0] == ‘e’)
break;
EXEC SQL EXECUTE dstmt USING :hnum;
if (SQLCODE == 0)
printf(“成功地把员工%s的级别提升一级!”, hnum);
}
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT;
exit(0);
}