2011年5月20日星期五

  Pro C 学习

由于以后的工作需要用到,所以从现在开始学习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;断开与数据库的连接,并释放相关的数据库资源

   
}

没有评论:

发表评论