首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

配置 IBM DB2 通用資料庫以建構 SQL 預存程序:編譯器環境與編譯命令完整設定

     編輯:DB2 教學

先決條件

在機器上建構 SQL 預存程序需安裝兩項產品:

  1. Application Development Client (ADC):含開發 DB2 應用所需的所有庫、標頭檔、預編譯器等
  2. 支援 DB2 的 C 編譯器:各平台支援清單請查閱 Application Building Guide

設定編譯器環境:DB2_SQLROUTINE_COMPILER_PATH

DB2 將 SQL 預存程序轉換為 C 代碼並編譯成預存程序庫。為讓 DB2 偵測已安裝的 C 編譯器,需建立可執行檔設定編譯器環境(更新 PATH、INCLUDE、LIB 環境變數),再設定登錄變數指向該檔案。

建立環境設定檔

  • Windows:批次檔 .bat
  • OS/2:命令檔 .cmd
  • UNIX:Shell 腳本

設定登錄變數

db2set DB2_SQLROUTINE_COMPILER_PATH=環境設定檔完整路徑

Windows NT/2000 特例:若編譯器環境變數已儲存為 SYSTEM 變數,無需設定此登錄變數。

DB2 內建預設環境設定檔

平台預設檔案路徑
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 編譯器並打算使用,無需另建檔案。

常見錯誤與檢查重點

  1. 路徑不符:預設檔案假設編譯器安裝路徑(如 Windows 下 Visual C++ 6.0 在 C:\Program Files\Microsoft Visual Studio),實際路徑不同(如 D:\Microsoft Visual Studio)時必須修改檔案內容
  2. 註解未移除:預設檔案所有行以 REM 開頭(批次檔註解符號),必須刪除 REM 才能生效

配置編譯命令:DB2_SQLROUTINE_COMPILE_COMMAND

環境就緒後,需設定針對所安裝編譯器的編譯命令。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=

總結:建構 SQL 預存程序兩大核心步驟

  1. 安裝編譯器並配置 DB2 偵測編譯器環境:建立環境設定檔(PATH/LIB/INCLUDE) → 設定 DB2_SQLROUTINE_COMPILER_PATH 指向該檔。可用預設檔或自建檔支援不同編譯器
  2. 設定編譯命令:設定 DB2_SQLROUTINE_COMPILE_COMMAND 為編譯命令。可用預設命令或自訂命令(加除錯選項、64 位選項等)

建構 SQL 預存程序常見錯誤源於編譯器環境配置錯誤。本文簡明說明環境建置流程。DB2 V7 FixPak 3 版本資訊提供更多平台預設編譯命令範例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved