OCI編程高級篇(十一) 其他一些LOB操作函數
訪問www.tomcoding.com網站,學習Oracle內部數據結構,詳細文檔說明,下載Oracle的exp/imp,DUL,logminer,ASM工具的源代碼,學習高技術含量的內容。
針對LOB的操作除了寫和讀函數之外,還有其他一些常用的函數,我們來介紹一下。
1. LOB擦除函數,對一段LOB數據進行擦除,CLOB填充為空格,BLOB填充為0。函數原型和參數如下。
sword OCILobErase2 ( OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
oraub8 *amount,
oraub8 offset );
svchp是一個輸入參數,OCI服務上下文句柄。
errhp是一個輸入/輸出參數,錯誤句柄,返回錯誤碼和錯誤信息文本。
locp是一個輸入/輸出參數,LOB定位符,與要擦除的LOB關聯。
amount是一個輸入/輸出參數,要擦除LOB數據的數量,CLOB以字符計算,BLOB以字節計算。
offset是一個輸入參數,要擦除數據的起始位置,從1開始計算,CLOB以字符為單位,BLOB以字節為單位。
2. 得到LOB的長度函數,原型和參數如下。
sword OCILobGetLength2 ( OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
oraub8 *lenp );
svchp是一個輸入參數,OCI服務上下文句柄。
errhp是一個輸入/輸出參數,錯誤句柄,返回錯誤碼和錯誤信息文本。
locp是一個輸入參數,要獲取長度的LOB定位符。
lenp是一個輸出參數,返回LOB的長度,CLOB以字符計算,BLOB以字節計算。
3. 判斷一個LOB是否打開了,注意這里是判斷LOB是否打開,不是定位符是否打開,如果一個定位符先與一個LOB1關聯,然后打開,再與一個LOB2關聯,也打開,如果后面把定位符關閉了,那么只是關閉了LOB2,LOB1仍然是打開的,還是需要把定位符與LOB1關聯,然后可以關閉LOB1。
sword OCILobIsOpen ( OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
boolean *flag );
svchp是一個輸入參數,OCI服務上下文句柄。
errhp是一個輸入/輸出參數,錯誤句柄,返回錯誤碼和錯誤信息文本。
locp是一個輸入參數,要測試是否打開的LOB定位符。
flag是一個輸出參數,如果返回TRUE表示LOB已打開,返回FALSE表示LOB未打開。
4. 截斷LOB函數,把LOB數據截斷為一個新的長度,只能往短了截。
sword OCILobTrim2 ( OCISvcCtx *svchp,
OCIError *errhp,
OCILobLocator *locp,
oraub8 newlen );
svchp是一個輸入參數,OCI服務上下文句柄。
errhp是一個輸入/輸出參數,錯誤句柄,返回錯誤碼和錯誤信息文本。
locp是一個輸入/輸出參數,要截斷的LOB定位符。
newlen是一個輸入參數,LOB的新長度,CLOB以字符計算,BLOB以字節計算。

浙公網安備 33010602011771號