歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

ORACLE 8.16 FOR RHLINUX6.2的PRO*C環境


1、PRO*C:

ORACLE數據庫作為數據庫產品中的佼佼者,應用十分廣泛,隨著對其應用的深入,使用ORACLE和C來編制應用系統成為許多系統的選擇,而ORACLE和C語言的接口知識成為應該掌握的和十分有用的。

PRO*C是ORACLE的預編譯器是一種編程工具,通過它把SQL語句嵌入到C語言程序中。如圖:

預編譯器把源程序作為輸入,然後翻譯程序中嵌入的 SQL語句,把它們轉化成對標准的ORACLE運行庫的調用,最後生成一個修改過的源程序。通過對修改過的源程序進行編譯、鏈接,形成可執行文件。

2、環境配置:

A、說明:

ORACLE預編譯器在ORACLE 8I安裝時是默認或選擇安裝的,安裝了PRO*C,則在$ORACLE_HOME/bin路徑下就有了可執行程序PROC,以及相應的未經配置預編譯環境。為使PRO*C預編譯器能工作我們還必須對環境做一些配置。

ORACLE的PRO*C是對預編譯器的選項值的改變來配置環境的。預編譯指令基本格式如下:

Proc 選項名=選項值 源文件

也可把選項值的改變放到CONFIG指定的文件中做。

PROC的選項

auto_connect

允許自動連接到 ops$ 帳號

char_map

正在映射字符數組和字符串

Close_on_commit

關閉所有 COMMIT 游標

codekr_c

將要生成的代碼類型

Comp_charset

C 編譯器支持的字符集類型

Config

用另一配置文件覆蓋系統配置文件

Cpp_suffix

覆蓋缺省的 C++ 文件名後綴

dbmsnative

兼容模式

Def_sqlcode

生成 '#define SQLCODE sqlca.sqlcode' 宏

Define

定義預處理器符號

Durationtransaction

設置高速緩存中對象的 pin 持續時間

Dynamic

指定 Oracle 或 ANSI 動態 SQL 語義

Errors

是否將錯誤消息發送到終端

Errtype

輸入文件的列表文件名稱錯誤

Fips

ANSI 的 FIPS 標志不符合用法

Header

為預編譯標題指定文件擴展名

hold_cursor

在游標高速緩存中控制游標保留

iname

輸入文件的名稱

Include

包括文件的目錄路徑

Intype

有關類型信息的輸入文件名稱

Lines

將 #line 指令添加到生成的代碼中

Lname

覆蓋缺省列表文件名

Ltype

列表文件中生成的數據量

maxliteral

生成的文字串的最大長度

maxopencursors

高速緩存的開放游標的最大數量

mode

代碼符合 Oracle 或 ANSI 規則

Nls_char

指定國家語言字符變量

Nls_local

控制 NLS 字符語義的實現方法

Objects

支持對象類型

oname

輸出文件名

oraca

控制 ORACA 的使用

Pagelen

列表文件頁面長度

parse

控制進行語法分析的非 SQL 代碼

prefetch

游標 OPEN 期間預讀取的行數

Release_cursor

控制從游標高速緩存中釋放游標

Select_error

控制選擇標記錯誤

sqlcheck

編譯時間 SQL 校驗總量

Sys_include

系統標題文件所在目錄

Threads

指示多線程應用程序

type_code

將 Oracle 或 ANSI 類型代碼用於動態 SQL

Unsafe_null

允許在沒有指示變量的情況下進行> NULL 讀取

Userid

用戶名/口令 [@dbname] 連接串

Varchar

允許使用隱式 varchar 結構

Version

將要返回的對象版本

 

大部分選項我們都可以用默認值,但其中有幾個選項是需要配置的。

l CONFIG:指定PROC的CONFIG文件。PROC默認配置文件為$ORACLE_HOME/precomp/admin/pcscfg.cfg,我們可以編輯我們要使用的CONFIG文件。

l INCLUDE:包括文件的目錄路徑,一般在CONFIG文件中配置,pcscfg.cfg中有默認定義。

l SYS_INCLUDE:系統頭文件所在目錄,一般在CONFIG文件中配置,pcscfg.cfg中有默認定義。但要注意可能默認的系統頭文件的路徑不對。如
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include)

lUSERID:用戶名/口令 [@dbname] 連接串

B、配置:

配置工作比較簡單,只要將默認的>CONFIG文件COPY到源程序所在的路徑下,修改其中的USERID。

使用如下命令對PROC源文件進行預編譯,輸出相應的C源程序。

Proc config=myconfg.cfg iname=myprog.pc oname=myprog.c

PRO*C將對INAME指定的PROC源文件進行預編譯,輸出ONAME指定的文件。

3、聯編環境:

預編譯只是將PROC源文預編譯成C源文件,而要將不同源文件編譯生成的目標文件聯編,則要指定聯編所需要的LIBRARY,ORACLE接口程序(PROC程序)需要的the client shared library分布在許多路徑下,為聯編方便,ORACLE提供了$ORACLE_HOME/precomp/demo/proc/demo_proc.mk文件。

使用如下命令:

make–f demo_proc.mk OBJS=”myporg.o mydb.o” EXE=myprog.e build

就可以完成聯編。

——蘭振興([email protected])


Copyright © Linux教程網 All Rights Reserved