複製鏈接
請複製以下鏈接發送給好友

pro*c

鎖定
PRO*C是Oracle提供的應用程序專用開發工具,它以C語言為宿主語言,能在C程序中嵌入SQL語句,進行數據庫操作。這種嵌入式的SQL語句容易掌握,適合初學者。
外文名
pro*c
性    質
工具
宿主語言
C語言
適    合
初學者

pro*c工具概述

ORACLE支持在幾種高級語言內嵌入SQL語句,或ORACLE庫函數調用來訪問數據庫。它們是C,COBOL,Ada,PASCALPL/I等,這些語言稱之為宿主語言,用它們開發的程序就稱為PRO* 程序,如PRO*C,PRO*COBOL等。
PROC在ORACLE的客户端軟件中就有,安裝oracle時選上即可。

pro*c工具介紹

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塊, 以改進應用程序的性能, 特別是在網絡環境下,可以減少網絡傳輸和處理的總開銷。
3.Pro*C的程序結構圖通俗來説,Pro*C程序實際是內嵌有SQL語句或PL/SQL塊的C程序, 因此它的組成很類似C程序

pro*c環境設置

(1)C編譯器
Solaris系統中常用的C語言編譯器GCC,是GNU組織的免費C編譯器,一般Linux版本中缺省都安裝有GCC,UNIX系統中有的並不自帶,因此需要手動安裝,本文所採用的GCC版本為3.2。
(2)PRO*C預編譯
PRO*C使用預編譯技術,預編譯器將源程序中的SQL語句轉換為標準的Oracle庫函數調用,從而生成C源程序,再經C編譯器編譯、鏈接後生成可執行文件。這個預編譯器是Oracle自帶的。
(3)C語言頭文件和函數庫。
Oracle安裝程序將這些文件安裝在$ORACLE_HOME/precomp目錄下。

pro*c程序開發

(1)説明SQL通訊區
SQL通訊區用來記錄執行每一個嵌入SQL語句的狀態信息,通過在函數體外使用下列語句實現:
#include <sqlca.h> 或者 EXEC SQL INCLUDE sqlca;
(2)聲明宿主變量,即C變量
這些變量是應用程序與Oracle通信的橋樑,應用程序的輸入數據通過C變量傳遞給Oracle,反之,Oracle的輸出數據又通過C變量傳遞給應用程序。舉例如下:
EXEC SQL BEGIN DECLARE SECTION;
char szUsername[16];
VARCHAR varPassword[16];
char *szStmt1="CREATE TABLE USERS (USERNAME VARCHAR2(15) NOT NULL,PASSWORD
VARCHAR2(15) NOT NULL)";
char *szStmt2= "SELECT PASSWORD FROM USERS WHERE USERNAME='chen'";
EXEC SQL END DECLARE SECTION;
值得注意的是:在SQL語句中使用C變量時,前面需加冒號,例如上面的變量應表示為:szUsername。其中,VARCHAR為C擴展數據類型,預編譯時,PRO*C預編譯器將它擴展為一個C結構類型
struct
{
unsigned short len;
unsigned char arr[16];
}varNo;
在SQL語句中使用VARCHAR類型變量時,只需指出結構名稱varPassword就可,但在C語句中使用VARCHAR類型變量時,必須具體説明所操作變量的結構元素名稱是varPassword.len還是varPassword.arr。另外,如果用VARCHAR類型變量做函數參數的話,只能用指針形式。
(3)連接數據庫
EXEC SQL CONNECT :username/password@DBname;
通過sqlca.sqlcode的值來判斷連接數據庫成是否功。
(4)執行SQL語句(分為靜態SQL語句和動態SQL語句)
靜態SQL語句是在開發應用程序時就已經明確了的數據庫操作,如:
EXEC SQL SELECT password INTO :szPassword FROM USERS WHERE username=:szUsername;
動態SQL語句是在運行時由外部數據提供的,不能直接在C程序中嵌入SQL 語句,但可以調用放在一個字符串變量裏的SQL語句,最簡單的方法是:EXEC SQL EXECUTE IMMEDIATE :szStmt1;但這樣執行的SQL語句不能實現查詢,實現查詢可用下列方法:
EXEC SQL PREPARE select_stmt FROM :szStmt2;
EXEC SQL EXECUTE select_stmt INTO :szPassword;
如果不再需要已準備好的語句,應釋放:EXEC SQL DEALLOCATE PREPARE select_stmt;
(5)提交或回滾所做的數據庫處理,並退出數據庫
回滾:EXEC SQL ROLLBACK WORK RELEASE;
提交:EXEC SQL COMMIT WORK RELEASE;
注意語句中的RELEASE選項,它要求關閉所有打開的遊標,之後斷開與數據庫服務器的連接。

pro*c文件生成

Solaris平台下可通過命令方式對PRO*C源程序進行預編譯,下列命令只列出了最常用的預編譯選項:
#proc iname=example.c INCLUDE=path CODE=ANSI_C MODE=ANSI CPP_SUFFIX=cc SQLCHECK=SEMANTICS USERID=username/password@DBname
預編譯後的example .cc文件就可以當作普通的C源文件來進行處理了。
#gcc -o exampled –I. -I/oracle/product/8.1.7/precomp/public example .cc
最終生成的exampled文件就是我們的可執行文件。