句柄層次:
1、常用句柄類型:
OCI環境句柄:
OCI_HTYPE_ENV—它定義所有OCI函數的環境調用,是其他句柄的父句柄。(由OCIEnvInit或OCIEnvCreate生成),環境句柄作爲OCIHandleAlloc()函數的parent 參數來分配其他句柄類型
錯誤句柄:
OCI_HTYPE_ERROR—作爲一些OCI函數的參數,用來記錄這些OCI函數操作過程中所產生的錯誤,當有錯誤發生時,可用COIErrorGet()來讀取錯誤句柄 中記錄的錯誤信息。
服務器環境句柄:
OCI_HTYPE_SVCCTX—定義OCI調用的服務器操作環境,它包含服務器、用戶會話和事務三種句柄。
·一個服務器句柄Server Handle 識別對一個數據庫的連接。
·一個用戶會話句柄User Session Handle 定義了一個用戶的角色和權限以及函數執行
的操作上下文。
·一個事務句柄定義了SQL 操作所屬的事務。
在需要更復雜的會話管理的應用程序中,服務上下午句柄必須被顯式地分配,並且服務
器句柄和用戶會話句柄必須通過 OCIAttrSet()函數被顯式地設置到服務上下午句柄中。
OCIServerAttach()函數和OCISessionBegin()函數分別初始化服務器和用戶會話句柄。
當應用程序對數據庫做修改時,OCI 自動隱式分配的事務句柄正確地工作。
服務器句柄:
OCI_HTYPE_SERVER—標識數據源,它轉換爲與服務器的物理連接。
用戶會話句柄:
OCI_HTYPE_SESSION—定義用戶角色和權限及OCI調用的執行環境。
事務句柄:
OCI_HTYPE_TRANS—定義執行SQL操作的事務環境,事務環境中包含用戶的會話狀態信息。
語句句柄:
Bind/Define句柄:屬於語句句柄的子句柄,由OCI庫隱式自動生成。用戶不需要自己再申請,OCI輸入變量存儲在bind 句柄中,輸出變量存儲在定義句柄中
OCI_HTYPE_STMT—是一個標識SQL語句或PL/SQL塊,以及其相關屬性的環境。
2、常用句柄屬性:
服務器環境句柄屬性:(OCI_HTYPE_SVCCTX)
OCI_ATTR_SERVER—設置/讀取服務環境的服務器環境屬性
OCI_ATTR_SESSION—設置/讀取服務環境的會話認證環境屬性
OCI_ATTR_TRANS—設置/讀取服務環境的事務環境屬性
用戶會話句柄屬性:(OCI_HTYPE_SESSION)
OCI_ATTR_USERNAME—設置會話認證所使用的用戶名
OCI_ATTR_PASSWORD—設置會話認證所使用的用戶口令
服務器句柄:(OCI_HTYPE_SEVER)
OCI_ATTR_NOBLOCKING_MODE—設置/讀取服務器連接:=TRUE時服務器連接設置爲非阻塞方式
語句句柄:(OCI_HTYPE_STMT)
OCI_ATTR_ROW_COUNT—只讀,爲當前已處理的行數,其default=1
OCI_ATTR_STMT_TYPE—讀取當前SQL語句的類型:
Eg : OCI_STMT_BEGIN
OCI_STMT_SELECT OCI_STMT_INSERT
OCI_STMT_UPDATE OCI_STMT_DELETE
OCI_ATTR_PARAM_COUNT—返回語句選擇列表中的列數
PS:這些平時用的較少一點的
描述句柄 :
描述句柄describe handle 由OCI 描述函數所使用,OCIDescribeAny() 。這個函數獲取關於
數據庫中的數據庫對象的信息(例如, 函數或者過程)。這個函數有一個參數是描述句柄,以及
關於被描述的對象的附加信息。當函數執行完成後,描述句柄就存有關於那個對象的信息。
然後OCI 應用程序可以通過參數描述符的屬性獲取描述信息。