PROC是ORACLE数据库提供的编程接口之一,其应用十分的广泛,本文通过一个具
体的例子,介绍PROC编程的一些经验及应注意的地方。
例子程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlda.h>
#include <sqlcpr.h>
EXEC SQL INCLUDE sqlca;
/*RELEASE_CURSOR=YES 使PROC 在执行完后释放与嵌入SQL有关资源*/
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
varchar vc_user[20];
long al_empno=0;
char ac_ename[11]="";
char ac_hiredate[20]="";
double af_sal=0;
EXEC SQL VAR ac_ename IS STRING(11);
EXEC SQL VAR ac_hiredate IS STRING(20);
EXEC SQL END DECLARE SECTION;
/*错误处理函数*/
void sql_error(char *msg)
{
printf("/n%s,%ld,%s/n", msg,sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK RELEASE;
exit(-1);
}
main()
{
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE ERROR: ");
/*连接数据库*/
strcpy(vc_user.arr,"scott/tiger@DEMO");
vc_user.len=16;
exec sql connect :vc_user;
EXEC SQL DECLARE cur_emp CURSOR FOR
SELECT EMPNO, ENAME,to_char(HIREDATE,'yyyy/mm/dd hh24:mi:ss'),SAL FROM
EMP;
EXEC SQL OPEN cur_emp;
while(1)
{
al_empno=0;
strcpy(ac_ename,"");
strcpy(ac_hiredate,"");
af_sal=0;
EXEC SQL FETCH cur_emp INTO :al_empno, :ac_ename:ename_ind,
:ac_hiredate:hiredate_ind, :af_sal:sal_ind;
if( sqlca.sqlcode == 1403)
{
break;
}
printf("empno=%ld,ename=%s,hiredate=%s,sal=%lf/n",al_empno,ac_ename,ac_hired
ate,af_sal);
}
EXEC SQL CLOSE cur_emp;
EXEC SQL ROLLBACK WORK RELEASE;
}
1、宿主变量的声明
在PROC中,在SQL语句中用到的变量称为宿主变量。他们应在EXEC SQL BEGIN
DECLARE SECTION;与EXEC SQL EDN DECLARE SECTION;
之间声明,如上面所示.在声明宿主变量时应注意以下几点:
(1) 在数据库表中定义为VARCHAR2,VARCHAR,CHAR的字段,在PROC中可声明为
CHAR,但长度应为它们在表中定义的长度加1,因为PROC中
CHAR型变量用/0做结尾。
如:ENAME在表中的定义为ename varchar2(10),在PROC中可定义为:
EXEC SQL BEGIN DEC
PROC编程基础
最新推荐文章于 2024-08-18 13:43:06 发布
本文详细介绍了Oracle数据库中的PROC编程,包括如何声明宿主变量、错误处理、数据库连接与断开、NULL值处理、错误处理函数以及动态SQL的使用。通过具体的代码示例,阐述了PROC编程的关键点和注意事项,对于理解PROC编程具有指导意义。
摘要由CSDN通过智能技术生成