數據庫 Proc編程一


proc編程
嵌入式sql:sql寫入到C語言程序中

proc編程頭文件路徑
app\xxx\product\11.2.0\dbhome_1\precomp\public

proc編程要注意proc編譯器也會使用gcc編譯器中的頭文件,所以需要在proc編譯器中進行配置,加上系統的頭文件路徑
配置文件路徑是:app\xxx\product\11.2.0\dbhome_1\precomp\admin\pcscfg.cfg


proc開發流程

1.proc工具預編譯 *.pc==>.c
proc編譯選項:parse=full|none(default full for C,others for c++) code=ANSI_C|CPP(default ansi_c)
C語言編譯:proc 源文件 生成文件
c++編譯:proc  源文件 生成文件 parse=none code=cpp
2.linux下編譯gcc -o dm01_hello dm01_hello.c -I/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public \
    -L/home/oracle_11/app/oracle/product/11.2.0/db_1/lib  -lclntsh
--linux查看oracle錯誤碼:oerr ora 錯誤碼
3.執行應用程序

proc程序結構
include 頭文件(c/c++ and pro*c/c++)
定義變量
定義函數
main
    連接數據庫:connect
    SQL操作語句:EXEC SQL...
    處理異常:exception handler
    斷開連接:EXEC SQL COMMIT.ROLLBACK WORK release
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h"

//先定義宿主變量(SQL變量)
EXEC SQL BEGIN DECLARE SECTION;
    char * serverid="scott/123456";
EXEC SQL END DECLARE SECTION;

void main()
{
    int ret=0;
    //C語言中使用宿主變量
    printf("serverid=%s\r\n",serverid);
    //連接數據庫
    EXEC SQL connect:serverid;
    if(sqlca.sqlcode!=0)
    {
        ret=sqlca.sqlcode;
        printf("connect err :%d",ret);
        system("pause");
    }
    printf("connect ok!\r\n");
    //提交事務斷開連接
    EXEC SQL commit release;
    printf("Oracle closed !\r\n");
    system("pause");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM