在機器上建構 SQL 預存程序需安裝兩項產品:
DB2 將 SQL 預存程序轉換為 C 代碼並編譯成預存程序庫。為讓 DB2 偵測已安裝的 C 編譯器,需建立可執行檔設定編譯器環境(更新 PATH、INCLUDE、LIB 環境變數),再設定登錄變數指向該檔案。
.bat.cmddb2set DB2_SQLROUTINE_COMPILER_PATH=環境設定檔完整路徑
Windows NT/2000 特例:若編譯器環境變數已儲存為 SYSTEM 變數,無需設定此登錄變數。
| 平台 | 預設檔案路徑 |
|---|---|
| Windows | %DB2PATH%\sqllib\function\routine\sr_cpath.bat |
| OS/2 | %DB2PATH%\sqllib\function\routine\sr_cpath.cmd |
| UNIX | $HOME/sqllib/function/routine/sr_cpath |
預設情況下 DB2 將 DB2_SQLROUTINE_COMPILER_PATH 設為上述檔案之一。若安裝預設 C 編譯器並打算使用,無需另建檔案。
C:\Program Files\Microsoft Visual Studio),實際路徑不同(如 D:\Microsoft Visual Studio)時必須修改檔案內容REM 開頭(批次檔註解符號),必須刪除 REM 才能生效環境就緒後,需設定針對所安裝編譯器的編譯命令。DB2 為各平台預設編譯器提供預設編譯命令:
AIX (IBM C Set++ V3.6.6):
xlC_r -+ -H512 -T512 -I$HOME/sqllib/include SQLROUTINE_FILENAME.c
-bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY
-o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2
Solaris (SPARC Compiler C++ V4.2/5.0):
cc -# -Kpic -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -G
-o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -R$HOME/sqllib/lib -ldb2
Windows (Microsoft Visual C++ V5.0/6.0)(單行連續輸入):
cl -Od -W2 /TC -D_X86_=1 -I%DB2PATH%include SQLROUTINE_FILENAME.c /link -dll -def:SQLROUTINE_FILENAME.def /out:SQLROUTINE_FILENAME.dll %DB2PATH%lib\db2api.lib
註:AIX/Solaris 範例中 `` 表示換行;Windows 命令為單行無換行。
安裝非預設編譯器或需自訂選項(如除錯資訊)時,需更新 DB2_SQLROUTINE_COMPILE_COMMAND:
AIX 加入 -g**:
db2set DB2_SQLROUTINE_COMPILE_COMMAND=xlC_r -+ -H512 -T512 -g -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2
Solaris 加入 -g**:
db2set DB2_SQLROUTINE_COMPILE_COMMAND=cc -# -Kpic -g -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -G -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -R$HOME/sqllib/lib -ldb2
Windows 加入除錯選項(單行):
db2set DB2_SQLROUTINE_COMPILE_COMMAND=cl -Od -W2 /TC -D_X86_=1 -I%DB2PATH%include SQLROUTINE_FILENAME.c /link -dll -def:SQLROUTINE_FILENAME.def /out:SQLROUTINE_FILENAME.dll -debug:full -pdb:none -debugtype:cv %DB2PATH%lib\db2api.lib
將變數設為空值即可恢復預設:
db2set DB2_SQLROUTINE_COMPILE_COMMAND=
DB2_SQLROUTINE_COMPILER_PATH 指向該檔。可用預設檔或自建檔支援不同編譯器DB2_SQLROUTINE_COMPILE_COMMAND 為編譯命令。可用預設命令或自訂命令(加除錯選項、64 位選項等)建構 SQL 預存程序常見錯誤源於編譯器環境配置錯誤。本文簡明說明環境建置流程。DB2 V7 FixPak 3 版本資訊提供更多平台預設編譯命令範例。