由於以後的工作需要用到,所以從現在開始學習Pro C
下面是一個簡單的樣本程式:
#include
.
.
.
EXEC SQL INCLUDE sqlca;
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);
}
void main()
{
EXE 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');
EXEC SQL OPEN cur_emp;
while(1)
{
al_empno = 0;
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_hiredate,af_sal);
}
EXEC SQL CLOSE cur_emp;
EXESQL ROLLBACK WORK RELEASE;
//在PROC程式中,要記住用EXEC SQL ROLLBACK WORK RELEASE;斷開與資料庫的串連,並釋放相關的資料庫資源
}