DBMS_LOB包用于操作大對象。
函數(shù)/存儲過程 | 類型 | 返回類型 | 描述 |
---|---|---|---|
APPEND(dest_lob IN OUT,src_lob) | 存儲過程 | N/A | 將一個大對象附加在另外一個大對象上。 |
COMPARE(lob_1, lob_2 [, amount[, offset_1 [, offset_2 ]]]) | 函數(shù) | INTEGER | 在給定的長度和偏移范圍內,對兩個大對象進行逐字節(jié)的精確比較。 |
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 | 將字符類型數(shù)據(jù)的大對象,轉換成二進制類型數(shù)據(jù)的大對象。 |
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 | 將二進制數(shù)據(jù)的大對象轉換成字符型數(shù)據(jù)的大對象。 |
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 | 刪除一個大對象的部分數(shù)據(jù)。 |
GET_STORAGE_LIMIT(lob_loc) | 函數(shù) | INTEGER | 大對象允許使用的最大存儲空間。 |
GETLENGTH(lob_loc) | 函數(shù) | INTEGER | 獲取大對象的長度。 |
INSTR(lob_loc, pattern [,offset [, nth ]]) | 函數(shù) | INTEGER | 返回在大對象中指定模式第n次出現(xiàn)時的位置。 |
READ(lob_loc, amount IN OUT,offset, buffer OUT) | 存儲過程 | N/A | 從大對象中讀取部分內容。 |
SUBSTR(lob_loc [, amount [,offset ]]) | 函數(shù) | RAW,VARCHAR2 | 返回大對象的部分內容。 |
TRIM(lob_loc IN OUT, newlen) | 存儲過程 | N/A | 將一個大對象截取到指定長度。 |
WRITE(lob_loc IN OUT, amount,offset, buffer) | 存儲過程 | N/A | 將數(shù)據(jù)寫入一個大對象中。 |
WRITEAPPEND(lob_loc IN OUT,amount, buffer) | 存儲過程 | N/A | 將數(shù)據(jù)添加到一個大對象的末尾。 |
下表列出的是在DBMS_LOB包中使用的公共變量。
公共變量 | 數(shù)據(jù)類型 | 變量值 |
---|---|---|
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 |
說明 在以下章節(jié)中,如果大對象是BLOB類型,長度和偏移量是以字節(jié)為單位。如果大對象是CLOB類型,長度和偏移量是以字符為單位。
APPEND
存儲過程APPEND用于將一個大對象附加在另外一個大對象上。這兩個大對象必須屬于同一類型。
APPEND(dest_lob IN OUT { BLOB | CLOB }, src_lob { BLOB | CLOB })
參數(shù)名稱 | 描述 |
---|---|
dest lob | 目標大對象的位置。它必須和參數(shù)src_lob代表的大對象的數(shù)據(jù)類型一致。 |
src lob | 源大對象的位置。它必須和參數(shù)dest_lob代表的大對象的數(shù)據(jù)類型一致。 |
COMPARE
函數(shù)COMPARE在給定的長度和偏移范圍內,對兩個大對象進行逐字節(jié)的精確比較。進行比較操作的兩個大對象必須是相同的數(shù)據(jù)類型。
status INTEGER COMPARE(lob_1 { BLOB | CLOB },
lob_2 { BLOB | CLOB }
[, amount INTEGER [, offset_1 INTEGER [, offset_2 INTEGER ]]])
參數(shù)名稱 | 描述 |
---|---|
lob_1 | 在比較操作中第一個大對象的位置,和參數(shù)lob_2代表的大對象的數(shù)據(jù)類型必須相同。 |
lob_2 | 在比較操作中第二個大對象的位置,和參數(shù)lob_1代表的大對象的數(shù)據(jù)類型必須相同。 |
amount |
|
offset 1 | 在比較操作中,第一個大對象中的起始位置。默認值為1。 |
offset_2 | 在比較操作中,第二個大對象中的起始位置。默認值為1。 |
status |
|
CONVERTTOBLOB
存儲過程CONVERTTOBLOB用于將字符類型數(shù)據(jù)的大對象轉換成二進制類型數(shù)據(jù)的大對象。
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)
參數(shù)名稱 | 描述 |
---|---|
dest lob | 表示一個BLOB類型的大對象。 |
src clob | 表示一個CLOB類型的大對象。 |
amount | 表示在參數(shù)src_clob所指定的大對象中要轉換的字符數(shù)量。 |
dest_offset IN | BLOB類型的目標大對象中字節(jié)的位置。 |
dest_offset OUT | 寫操作完成后,在BLOB類型大對象中字節(jié)的位置。 |
src offset IN | 轉換操作中, CLOB類型大對象開始的位置。 |
src_offset OUT | 在轉換操作完成后,CLOB類型大對象中字符的位置。 |
blob csid | BLOB類型大對象中的字符集ID。 |
langcontext IN | 轉換操作中使用的語言環(huán)境。通常使用默認值0。 |
langcontext OUT | 轉換后的語言環(huán)境。 |
warning |
|
CONVERTTOCLOB
存儲過程CONVERTTOCLOB用于將二進制數(shù)據(jù)的大對象轉換成字符型數(shù)據(jù)的大對象。
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)
參數(shù)名稱 | 描述 |
---|---|
dest lob | CLOB類型大對象的位置。 |
src_blob | BLOB類型大對象的位置。 |
amount | 由參數(shù)src_blob指定的大對象中要進行轉換的字節(jié)數(shù)量。 |
dest_offset IN | 在CLOB類型大對象中的位置。 |
dest_offset OUT | 寫操作完成后在CLOB類型大對象中字符的位置。 |
src offset IN | 進行轉換操作時BLOB類型大對象中字節(jié)的開始位置。 |
src_offset OUT | 轉換操作完成后,在BLOB類型大對象中字節(jié)的位置。 |
blob csid | CLOB類型大對象的字符集ID。 |
CLOB. langcontext IN | 轉換操作時使用語言環(huán)境。通常使用默認值0。 |
langcontext OUT | 轉換操作完成后的語言環(huán)境。 |
warning |
|
COPY
存儲過程COPY用于將一個大對象復制為另一個大對象。源和目標大對象必須具有相同的數(shù)據(jù)類型。
COPY(dest_lob IN OUT { BLOB | CLOB }, src_lob
{ BLOB | CLOB },
amount INTEGER
[, dest_offset INTEGER [, src_offset INTEGER ]])
參數(shù)名稱 | 描述 |
---|---|
dest lob | 在大對象復制操作中目標大對象的位置。它和參數(shù)src_lob代表的大對象要具有相同的數(shù)據(jù)類型。 |
src lob | 在大對象復制操作中的源大對象的位置。它和參數(shù)dest_lob代表大對象的數(shù)據(jù)類型必須相同。 |
amount | 由參數(shù)src_lob指定的在大對象中拷貝的字節(jié)或字符數(shù)。 |
dest offset | 目標大對象中的位置。寫入源大對象內容操作時的開始位置。默認值為1。 |
src offset | 源大對象中的位置。將源大對象拷貝到目標大對象操作時的開始位置。默認值為1。 |
ERASE
存儲過程ERASE用于刪除一個大對象的部分數(shù)據(jù)。即分別用0字節(jié)過濾器替代BLOB類型大對象的部分內容,用空格替代CLOB類型大對象的部分內容。操作結束后大對象的實際大小不會改變。
ERASE(lob_loc IN OUT { BLOB | CLOB }, amount IN OUT INTEGER
[, offset INTEGER ])
參數(shù)名稱 | 描述 |
---|---|
lob loc | 待刪除的大對象。 |
amount IN | 大對象中待刪除的字節(jié)或字符數(shù)。 |
amount OUT | 實際被清除的字節(jié)或字符數(shù)量。如果在參數(shù)amount指定的字節(jié)或字符數(shù)被清除前已經達到了大對象的末尾,那么這個值會比輸入值小。 |
offset | 對大對象進行清除操作時開始的位置。默認值為1。 |
GET_STORAGE_LIMIT
函數(shù)GET_STORAGE_LIMIT返回大對象允許使用的最大存儲空間。
size INTEGER GET_STORAGE_LIMIT(lob_loc BLOB)
size INTEGER GET_STORAGE_LIMIT(lob_loc CLOB)
參數(shù)名稱 | 描述 |
---|---|
size | 在數(shù)據(jù)庫中一個大對象可允許使用的最大存儲空間。 |
lob loc | 這個參數(shù)只是為了與Oracle兼容而提供,在實際運行中可以忽略。 |
GETLENGTH
函數(shù)GETLENGTH返回一個大對象的長度。
amount INTEGER GETLENGTH(lob_loc BLOB)
amount INTEGER GETLENGTH(lob_loc CLOB)
參數(shù)名稱 | 描述 |
---|---|
lob loc | 大對象名稱。 |
amount | 大對象的長度。
|
INSTR
函數(shù)INSTR返回在大對象中指定模式第n次出現(xiàn)時的位置。
position INTEGER INSTR(lob_loc { BLOB | CLOB },
pattern { RAW | VARCHAR2 } [, offset INTEGER [, nth INTEGER ]])
參數(shù)名稱 | 描述 |
---|---|
lob loc | 大對象的名稱。 |
pattern | 以字節(jié)為單位或以字符為單位的模式,用于匹配大對象中的內容。
|
offset | 參數(shù)lob_loc代表的大對象中搜索模式時的開始位置。第一個字節(jié)或字符是位置1。默認值為1。 |
nth | 由給定的偏移量指定起始位置,開始搜索指定模式第n次出現(xiàn)時的位置。默認值為1。 |
position | 在大對象中的第n次出現(xiàn)模式的位置,搜索的起始位置由參數(shù)offset指定。 |
READ
存儲過程READ用于從大對象中讀取部分內容,然后把這部分內容放到緩沖區(qū)中。
READ(lob_loc { BLOB | CLOB }, amount IN OUT BINARY_INTEGER,
offset INTEGER, buffer OUT { RAW | VARCHAR2 })
參數(shù)名稱 | 描述 |
---|---|
lob loc | 進行讀操作的大對象。 |
amount IN | 讀取的字節(jié)或字符的總數(shù)。 |
amount OUT | 實際讀取的字節(jié)或字符的總數(shù)。如果這里沒有更多數(shù)據(jù)可供讀取,那么參數(shù)amount返回0,并且產生異常DATA_NOT_FOUND 。
|
offset | 在大對象中開始進行讀操作時的位置。第一個字節(jié)或字符的位置是1。 |
buffer | 接收大對象內容的變量。
|
SUBSTR
函數(shù)SUBSTR用于返回大對象的部分內容。
data { RAW | VARCHAR2 } SUBSTR(lob_loc { BLOB | CLOB }
[, amount INTEGER [, offset INTEGER ]])
參數(shù)名稱 | 描述 |
---|---|
lob loc | 用于指示進行讀操作的大對象。 |
amount | 所返回的字節(jié)或字符的數(shù)量。默認值為32,767。 |
offset | 開始返回數(shù)據(jù)時大對象中的位置。第一個字節(jié)或字符的位置是1。默認值為1。 |
data | 用于返回部分被讀取的大對象內容。
|
TRIM
存儲過程TRIM用于將一個大對象截斷到指定長度。
TRIM(lob_loc IN OUT { BLOB | CLOB }, newlen INTEGER)
參數(shù)名稱 | 描述 |
---|---|
lob loc | 指示被截斷長度的大對象。 |
newlen | 被截斷長度的大對象的字節(jié)或字符總數(shù)。 |
WRITE
存儲過程WRITE用于將數(shù)據(jù)寫入一個大對象中。從指定的偏移量開始,在指定長度范圍內的數(shù)據(jù)都會被緩沖區(qū)中的數(shù)據(jù)覆蓋。
WRITE(lob_loc IN OUT { BLOB | CLOB },
amount BINARY_INTEGER,
offset INTEGER, buffer { RAW | VARCHAR2 })
參數(shù)名稱 | 描述 |
---|---|
lob loc | 用于指示進行寫操作的大對象。 |
amount | 在緩沖區(qū)中字節(jié)或字符的數(shù)量,這些字節(jié)或字符將被寫到大對象中。 |
offset | 大對象中的偏移量。 |
buffer | 用于返回部分被讀取的大對象內容。
|
WRITEAPPEND
存儲過程WRITEAPPEND用于將數(shù)據(jù)添加到一個大對象的末尾。
WRITEAPPEND(lob_loc IN OUT { BLOB | CLOB },
amount BINARY_INTEGER, buffer { RAW | VARCHAR2 })
參數(shù)名稱 | 描述 |
---|---|
lob loc | 待添加數(shù)據(jù)的大對象。 |
amount | 緩沖區(qū)中字節(jié)或字符的數(shù)量,這些字節(jié)或字符將添加到大對象的尾部。 |
buffer | 用于返回部分被讀取的大對象內容。
|