什麼是Pro*C/C++

來源:互聯網
上載者:User

ORACLE支援幾種進階語言中內嵌入SQL語句,或ORACLE庫函數調用來訪問資料庫。它們是C,COBOL,Ada,PASCAL,PL/I等,這些語言稱之為宿主語言,用它們開發的程式就稱為PRO* 程式,如PRO*C,PRO*COBOL等。
PROC在ORACLE的用戶端軟體中就有,安裝oracle時選上即可。

1.什麼是Pro*C/C++
 通過在過程化程式設計語言C/C++中嵌入SQL語句而開發出的應用程式.
2.簡要說明:
 在通用程式設計語言中使用的SQL稱為嵌入式SQL.目的是Pro*C/C++將使 C/C++成為訪問資料庫的工具.

在ORACLE資料庫管理和系統中, 有三種訪問資料庫的方法;

(1) 用SQL*Plus, 它有SQL命令以互動的應用程式訪問資料庫;

(2)用第四代語言應用開發工具開發的應用程式訪問資料庫,這些工具有SQL*Froms,QL*Reportwriter,SQL*Menu等;

(3) 利用在第三代語言內嵌入的SQL語言或ORACLE庫函數調用來訪問。

Pro*C就屬於第三種開發工具之一, 它把過程化語言C和非過程化語言SQL最完善地結合起來,具有完備的過程處理能力,又能完成任何資料庫的處理品任務,使使用者可以通過編程完成各種類型的報表。

在Pro*C程式中可以嵌入SQL語言,利用這些SQL語言可以完成動態地建立、修改和刪除資料庫中的表,也可以查詢、插入、修改和刪除資料庫表中的行, 還可以實現事務的提交和復原。

在Pro*C程式中還可以嵌入PL/SQL塊, 以改進應用程式的效能, 特別是在網路環境下,可以減少網路傳輸和處理的總開銷。

2.Pro*C的程式結構圖通俗來說,Pro*C程式實際是內嵌有SQL語句或PL/SQL塊的C程式, 因此它的組成很類似C程式

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.