DBMS_LOB包用於操作大對象。
| 函數/預存程序 | 類型 | 傳回型別 | 描述 |
| APPEND(dest_lob IN OUT,src_lob) | 預存程序 | N/A | 將一個大對象附加在另外一個大對象上。 |
| COMPARE(lob_1, lob_2 [, amount[, offset_1 [, offset_2 ]]]) | 函數 | INTEGER | 在給定的長度和位移範圍內,對兩個大對象進行逐位元組的精確比較。 |
| CONVERTOBLOB(dest_lob IN OUT,src_clob, amount, dest_offset IN OUT, src_offset IN OUT,blob_csid, lang_context IN OUT,warning OUT) | 預存程序 | N/A | 將字元類型資料的大對象,轉換成二進位類型資料的大對象。 |
| CONVERTTOCLOB(dest_lob IN OUT,src_blob, amount, dest_offset IN OUT, src_offset IN OUT,blob_csid, lang_context IN OUT,warning OUT) | 預存程序 | N/A | 將位元據的大對象轉換成字元型資料的大對象。 |
| COPY(dest_lob IN OUT, src_lob,amount [, dest_offset [,src_offset ]]) | 預存程序 | N/A | 將一個大對象複製為另一個大對象。 |
| ERASE(lob_loc IN OUT, amount IN OUT [, offset ]) | 預存程序 | N/A | 刪除一個大對象的部分資料。 |
| GET_STORAGE_LIMIT(lob_loc) | 函數 | INTEGER | 大對象允許使用的最大儲存空間。 |
| GETLENGTH(lob_loc) | 函數 | INTEGER | 擷取大對象的長度。 |
| INSTR(lob_loc, pattern [,offset [, nth ]]) | 函數 | INTEGER | 返回在大對象中指定模式第n次出現時的位置。 |
| READ(lob_loc, amount IN OUT,offset, buffer OUT) | 預存程序 | N/A | 從大對象中讀取部分內容。 |
| SUBSTR(lob_loc [, amount [,offset ]]) | 函數 | RAW,VARCHAR2 | 返回大對象的部分內容。 |
| TRIM(lob_loc IN OUT, newlen) | 預存程序 | N/A | 將一個大對象截取到指定長度。 |
| WRITE(lob_loc IN OUT, amount,offset, buffer) | 預存程序 | N/A | 將資料寫入一個大對象中。 |
| WRITEAPPEND(lob_loc IN OUT,amount, buffer) | 預存程序 | N/A | 將資料添加到一個大對象的末尾。 |
下表列出的是在DBMS_LOB包中使用的公開變數。
| 公開變數 | 資料類型 | 變數值 |
| compress off | INTEGER | 0 |
| compress_on | INTEGER | 1 |
| deduplicate_off | INTEGER | 0 |
| deduplicate_on | INTEGER | 4 |
| default_csid | INTEGER | 0 |
| default_lang_ctx | INTEGER | 0 |
| encrypt_off | INTEGER | 0 |
| encrypt_on | INTEGER | 1 |
| file_readonly | INTEGER | 0 |
| lobmaxsize | INTEGER | 1073741823 |
| lob_readonly | INTEGER | 0 |
| lob_readwrite | INTEGER | 1 |
| no_warning | INTEGER | 0 |
| opt_compress | INTEGER | 1 |
| opt_deduplicate | INTEGER | 4 |
| opt_encrypt | INTEGER | 2 |
| warn_inconvertible_char | INTEGER | 1 |
說明 在以下章節中,如果大對象是BLOB類型,長度和位移量是以位元組為單位。如果大對象是CLOB類型,長度和位移量是以字元為單位。
APPEND
預存程序APPEND用於將一個大對象附加在另外一個大對象上。這兩個大對象必須屬於同一類型。
APPEND(dest_lob IN OUT { BLOB | CLOB }, src_lob { BLOB | CLOB })| 參數名稱 | 描述 |
| dest lob | 目標大對象的位置。它必須和參數src_lob代表的大對象的資料類型一致。 |
| src lob | 源大對象的位置。它必須和參數dest_lob代表的大對象的資料類型一致。 |
COMPARE
函數COMPARE在給定的長度和位移範圍內,對兩個大對象進行逐位元組的精確比較。進行比較操作的兩個大對象必須是相同的資料類型。
status INTEGER COMPARE(lob_1 { BLOB | CLOB },
lob_2 { BLOB | CLOB }
[, amount INTEGER [, offset_1 INTEGER [, offset_2 INTEGER ]]])| 參數名稱 | 描述 |
| lob_1 | 在比較操作中第一個大對象的位置,和參數lob_2代表的大對象的資料類型必須相同。 |
| lob_2 | 在比較操作中第二個大對象的位置,和參數lob_1代表的大對象的資料類型必須相同。 |
| amount |
|
| offset 1 | 在比較操作中,第一個大對象中的起始位置。預設值為1。 |
| offset_2 | 在比較操作中,第二個大對象中的起始位置。預設值為1。 |
| status |
|
CONVERTTOBLOB
預存程序CONVERTTOBLOB用於將字元類型資料的大對象轉換成二進位類型資料的大對象。
CONVERTTOBLOB(dest_lob IN OUT BLOB, src_clob CLOB,
amount INTEGER, dest_offset IN OUT INTEGER,
src_offset IN OUT INTEGER, blob_csid NUMBER,
lang_context IN OUT INTEGER, warning OUT INTEGER)| 參數名稱 | 描述 |
| dest lob | 表示一個BLOB類型的大對象。 |
| src clob | 表示一個CLOB類型的大對象。 |
| amount | 表示在參數src_clob所指定的大對象中要轉換的字元數量。 |
| dest_offset IN | BLOB類型的目標大對象中位元組的位置。 |
| dest_offset OUT | 寫操作完成後,在BLOB類型大對象中位元組的位置。 |
| src offset IN | 轉換操作中, CLOB類型大對象開始的位置。 |
| src_offset OUT | 在轉換操作完成後,CLOB類型大對象中字元的位置。 |
| blob csid | BLOB類型大對象中的字元集ID。 |
| langcontext IN | 轉換操作中使用的語言環境。通常使用預設值0。 |
| langcontext OUT | 轉換後的語言環境。 |
| warning |
|
CONVERTTOCLOB
預存程序CONVERTTOCLOB用於將位元據的大對象轉換成字元型資料的大對象。
CONVERTTOCLOB(dest_lob IN OUT CLOB, src_blob BLOB,
amount INTEGER, dest_offset IN OUT INTEGER,
src_offset IN OUT INTEGER, blob_csid NUMBER,
lang_context IN OUT INTEGER, warning OUT INTEGER)| 參數名稱 | 描述 |
| dest lob | CLOB類型大對象的位置。 |
| src_blob | BLOB類型大對象的位置。 |
| amount | 由參數src_blob指定的大對象中要進行轉換的位元組數量。 |
| dest_offset IN | 在CLOB類型大對象中的位置。 |
| dest_offset OUT | 寫操作完成後在CLOB類型大對象中字元的位置。 |
| src offset IN | 進行轉換操作時BLOB類型大對象中位元組的開始位置。 |
| src_offset OUT | 轉換操作完成後,在BLOB類型大對象中位元組的位置。 |
| blob csid | CLOB類型大對象的字元集ID。 |
| CLOB. langcontext IN | 轉換操作時使用語言環境。通常使用預設值0。 |
| langcontext OUT | 轉換操作完成後的語言環境。 |
| warning |
|
COPY
預存程序COPY用於將一個大對象複製為另一個大對象。源和目標大對象必須具有相同的資料類型。
COPY(dest_lob IN OUT { BLOB | CLOB }, src_lob
{ BLOB | CLOB },
amount INTEGER
[, dest_offset INTEGER [, src_offset INTEGER ]])| 參數名稱 | 描述 |
| dest lob | 在大對象複製操作中目標大對象的位置。它和參數src_lob代表的大對象要具有相同的資料類型。 |
| src lob | 在大對象複製操作中的源大對象的位置。它和參數dest_lob代表大對象的資料類型必須相同。 |
| amount | 由參數src_lob指定的在大對象中拷貝的位元組或字元數。 |
| dest offset | 目標大對象中的位置。寫入源大對象內容操作時的開始位置。預設值為1。 |
| src offset | 源大對象中的位置。將源大對象拷貝到目標大對象操作時的開始位置。預設值為1。 |
ERASE
預存程序ERASE用於刪除一個大對象的部分資料。即分別用0位元組過濾器替代BLOB類型大對象的部分內容,用空格替代CLOB類型大對象的部分內容。操作結束後大對象的實際大小不會改變。
ERASE(lob_loc IN OUT { BLOB | CLOB }, amount IN OUT INTEGER
[, offset INTEGER ])| 參數名稱 | 描述 |
| lob loc | 待刪除的大對象。 |
| amount IN | 大對象中待刪除的位元組或字元數。 |
| amount OUT | 實際被清除的位元組或字元數量。如果在參數amount指定的位元組或字元數被清除前已經達到了大對象的末尾,那麼這個值會比輸入值小。 |
| offset | 對大對象進行清除操作時開始的位置。預設值為1。 |
GET_STORAGE_LIMIT
函數GET_STORAGE_LIMIT返回大對象允許使用的最大儲存空間。
size INTEGER GET_STORAGE_LIMIT(lob_loc BLOB)
size INTEGER GET_STORAGE_LIMIT(lob_loc CLOB)| 參數名稱 | 描述 |
| size | 在資料庫中一個大對象可允許使用的最大儲存空間。 |
| lob loc | 這個參數只是為了與Oracle相容而提供,在實際運行中可以忽略。 |
GETLENGTH
函數GETLENGTH返回一個大對象的長度。
amount INTEGER GETLENGTH(lob_loc BLOB)
amount INTEGER GETLENGTH(lob_loc CLOB)| 參數名稱 | 描述 |
| lob loc | 大對象名稱。 |
| amount | 大對象的長度。
|
INSTR
函數INSTR返回在大對象中指定模式第n次出現時的位置。
position INTEGER INSTR(lob_loc { BLOB | CLOB },
pattern { RAW | VARCHAR2 } [, offset INTEGER [, nth INTEGER ]])| 參數名稱 | 描述 |
| lob loc | 大對象的名稱。 |
| pattern | 以位元組為單位或以字元為單位的模式,用於匹配大對象中的內容。
|
| offset | 參數lob_loc代表的大對象中搜尋模式時的開始位置。第一個位元組或字元是位置1。預設值為1。 |
| nth | 由給定的位移量指定起始位置,開始搜尋指定模式第n次出現時的位置。預設值為1。 |
| position | 在大對象中的第n次出現模式的位置,搜尋的起始位置由參數offset指定。 |
READ
預存程序READ用於從大對象中讀取部分內容,然後把這部分內容放到緩衝區中。
READ(lob_loc { BLOB | CLOB }, amount IN OUT BINARY_INTEGER,
offset INTEGER, buffer OUT { RAW | VARCHAR2 })| 參數名稱 | 描述 |
| lob loc | 進行讀操作的大對象。 |
| amount IN | 讀取的位元組或字元的總數。 |
| amount OUT | 實際讀取的位元組或字元的總數。如果這裡沒有更多資料可供讀取,那麼參數amount返回0,並且產生異常DATA_NOT_FOUND。 |
| offset | 在大對象中開始進行讀操作時的位置。第一個位元組或字元的位置是1。 |
| buffer | 接收大對象內容的變數。
|
SUBSTR
函數SUBSTR用於返回大對象的部分內容。
data { RAW | VARCHAR2 } SUBSTR(lob_loc { BLOB | CLOB }
[, amount INTEGER [, offset INTEGER ]])| 參數名稱 | 描述 |
| lob loc | 用於指示進行讀操作的大對象。 |
| amount | 所返回的位元組或字元的數量。預設值為32,767。 |
| offset | 開始返回資料時大對象中的位置。第一個位元組或字元的位置是1。預設值為1。 |
| data | 用於返回部分被讀取的大對象內容。
|
TRIM
預存程序TRIM用於將一個大對象截斷到指定長度。
TRIM(lob_loc IN OUT { BLOB | CLOB }, newlen INTEGER)| 參數名稱 | 描述 |
| lob loc | 指示被截斷長度的大對象。 |
| newlen | 被截斷長度的大對象的位元組或字元總數。 |
WRITE
預存程序WRITE用於將資料寫入一個大對象中。從指定的位移量開始,在指定長度範圍內的資料都會被緩衝區中的資料覆蓋。
WRITE(lob_loc IN OUT { BLOB | CLOB },
amount BINARY_INTEGER,
offset INTEGER, buffer { RAW | VARCHAR2 })| 參數名稱 | 描述 |
| lob loc | 用於指示進行寫操作的大對象。 |
| amount | 在緩衝區中位元組或字元的數量,這些位元組或字元將被寫到大對象中。 |
| offset | 大對象中的位移量。 |
| buffer | 用於返回部分被讀取的大對象內容。
|
WRITEAPPEND
預存程序WRITEAPPEND用於將資料添加到一個大對象的末尾。
WRITEAPPEND(lob_loc IN OUT { BLOB | CLOB },
amount BINARY_INTEGER, buffer { RAW | VARCHAR2 })| 參數名稱 | 描述 |
| lob loc | 待添加資料的大對象。 |
| amount | 緩衝區中位元組或字元的數量,這些位元組或字元將添加到大對象的尾部。 |
| buffer | 用於返回部分被讀取的大對象內容。
|