全部產品
Search
文件中心

PolarDB:DBMS_LOB

更新時間:Jul 06, 2024

DBMS_LOB包用於操作大對象。

表 1. 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包中使用的公開變數。
表 2. DBMS_LOB公開變數
公開變數資料類型變數值
compress offINTEGER0
compress_onINTEGER1
deduplicate_offINTEGER0
deduplicate_onINTEGER4
default_csidINTEGER0
default_lang_ctxINTEGER0
encrypt_offINTEGER0
encrypt_onINTEGER1
file_readonlyINTEGER0
lobmaxsizeINTEGER1073741823
lob_readonlyINTEGER0
lob_readwriteINTEGER1
no_warningINTEGER0
opt_compressINTEGER1
opt_deduplicateINTEGER4
opt_encryptINTEGER2
warn_inconvertible_charINTEGER1
說明 在以下章節中,如果大對象是BLOB類型,長度和位移量是以位元組為單位。如果大對象是CLOB類型,長度和位移量是以字元為單位。

APPEND

預存程序APPEND用於將一個大對象附加在另外一個大對象上。這兩個大對象必須屬於同一類型。
APPEND(dest_lob IN OUT { BLOB | CLOB }, src_lob { BLOB | CLOB })
表 3. 參數說明
參數名稱描述
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 ]]])
表 4. 參數說明
參數名稱描述
lob_1在比較操作中第一個大對象的位置,和參數lob_2代表的大對象的資料類型必須相同。
lob_2在比較操作中第二個大對象的位置,和參數lob_1代表的大對象的資料類型必須相同。
amount
  • 如果大對象是BLOB類型,則是對兩個大對象各自的總位元組數進行比較。
  • 如果大對象是CLOB類型,則是對兩個大對象各自總的字元數進行比較。
參數的預設值是一個大對象的最大容量。
offset 1在比較操作中,第一個大對象中的起始位置。預設值為1。
offset_2在比較操作中,第二個大對象中的起始位置。預設值為1。
status
  • 如果在指定的長度和位移範圍內,兩個大對象完全相等,這個參數返回0。
  • 如果在指定的長度和位移範圍內,兩個大對象不相等,則返回非零值。
  • 如果參數amountoffset_1或者offset_2小於0,則返回空值。

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)
表 5. 參數說明
參數名稱描述
dest lob表示一個BLOB類型的大對象。
src clob表示一個CLOB類型的大對象。
amount表示在參數src_clob所指定的大對象中要轉換的字元數量。
dest_offset INBLOB類型的目標大對象中位元組的位置。
dest_offset OUT寫操作完成後,在BLOB類型大對象中位元組的位置。
src offset IN轉換操作中, CLOB類型大對象開始的位置。
src_offset OUT在轉換操作完成後,CLOB類型大對象中字元的位置。
blob csidBLOB類型大對象中的字元集ID。
langcontext IN轉換操作中使用的語言環境。通常使用預設值0。
langcontext OUT轉換後的語言環境。
warning
  • 如果轉換成功,則返回0。
  • 如果遇到不可轉換的字元,則返回1。

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)
表 6. 參數說明
參數名稱描述
dest lobCLOB類型大對象的位置。
src_blobBLOB類型大對象的位置。
amount由參數src_blob指定的大對象中要進行轉換的位元組數量。
dest_offset IN在CLOB類型大對象中的位置。
dest_offset OUT寫操作完成後在CLOB類型大對象中字元的位置。
src offset IN進行轉換操作時BLOB類型大對象中位元組的開始位置。
src_offset OUT轉換操作完成後,在BLOB類型大對象中位元組的位置。
blob csidCLOB類型大對象的字元集ID。
CLOB. langcontext IN轉換操作時使用語言環境。通常使用預設值0。
langcontext OUT轉換操作完成後的語言環境。
warning
  • 如果轉換成功,返回0。
  • 如果遇到不可轉換的字元,則返回1。

COPY

預存程序COPY用於將一個大對象複製為另一個大對象。源和目標大對象必須具有相同的資料類型。
COPY(dest_lob IN OUT { BLOB | CLOB }, src_lob 
{ BLOB | CLOB },
  amount INTEGER
  [, dest_offset INTEGER [, src_offset INTEGER ]])
表 7. 參數說明
參數名稱描述
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 ])
表 8. 參數說明
參數名稱描述
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)
表 9. 參數說明
參數名稱描述
size在資料庫中一個大對象可允許使用的最大儲存空間。
lob loc這個參數只是為了與Oracle相容而提供,在實際運行中可以忽略。

GETLENGTH

函數GETLENGTH返回一個大對象的長度。
amount INTEGER GETLENGTH(lob_loc BLOB)

amount INTEGER GETLENGTH(lob_loc CLOB)
表 10. 參數說明
參數名稱描述
lob loc大對象名稱。
amount大對象的長度。
  • BLOB類型大對象,以位元組為單位。
  • CLOB類型大對象,以字元為單位。

INSTR

函數INSTR返回在大對象中指定模式第n次出現時的位置。
position INTEGER INSTR(lob_loc { BLOB | CLOB },
  pattern { RAW | VARCHAR2 } [, offset INTEGER [, nth INTEGER ]])
表 11. 參數說明
參數名稱描述
lob loc大對象的名稱。
pattern以位元組為單位或以字元為單位的模式,用於匹配大對象中的內容。
  • 如果lob_loc代表BLOB類型大對象,那麼模式必須是RAW類型。
  • 如果lob_loc代表CLOB類型大對象,那麼模式必須是VARCHAR2類型。
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 })
表 12. 參數說明
參數名稱描述
lob loc進行讀操作的大對象。
amount IN讀取的位元組或字元的總數。
amount OUT實際讀取的位元組或字元的總數。如果這裡沒有更多資料可供讀取,那麼參數amount返回0,並且產生異常DATA_NOT_FOUND
offset在大對象中開始進行讀操作時的位置。第一個位元組或字元的位置是1。
buffer接收大對象內容的變數。
  • 如果參數lob_loc是BLOB類型大對象,那麼參數buffer必須是RAW類型。
  • 如果參數lob_loc是CLOB類型大對象,那麼參數buffer則必須是VARCHAR2類型。

SUBSTR

函數SUBSTR用於返回大對象的部分內容。
data { RAW | VARCHAR2 } SUBSTR(lob_loc { BLOB | CLOB }
  [, amount INTEGER [, offset INTEGER ]])
表 13. 參數說明
參數名稱描述
lob loc用於指示進行讀操作的大對象。
amount所返回的位元組或字元的數量。預設值為32,767。
offset開始返回資料時大對象中的位置。第一個位元組或字元的位置是1。預設值為1。
data用於返回部分被讀取的大對象內容。
  • 如果參數lob_loc是BLOB類型大對象,那麼data必須是RAW類型。
  • 如果參數lob_loc是CLOB類型大對象,那麼data必須是VARCHAR2類型。

TRIM

預存程序TRIM用於將一個大對象截斷到指定長度。
TRIM(lob_loc IN OUT { BLOB | CLOB }, newlen INTEGER)
表 14. 參數說明
參數名稱描述
lob loc指示被截斷長度的大對象。
newlen被截斷長度的大對象的位元組或字元總數。

WRITE

預存程序WRITE用於將資料寫入一個大對象中。從指定的位移量開始,在指定長度範圍內的資料都會被緩衝區中的資料覆蓋。
WRITE(lob_loc IN OUT { BLOB | CLOB },
  amount BINARY_INTEGER,
  offset INTEGER, buffer { RAW | VARCHAR2 })
表 15. 參數說明
參數名稱描述
lob loc用於指示進行寫操作的大對象。
amount在緩衝區中位元組或字元的數量,這些位元組或字元將被寫到大對象中。
offset大對象中的位移量。
buffer用於返回部分被讀取的大對象內容。
  • 如果參數lob_loc是BLOB類型大對象,那麼參數buffer必須是RAW類型。
  • 如果參數lob_loc是CLOB類型大對象,那麼參數buffer必須是VARCHAR2類型。

WRITEAPPEND

預存程序WRITEAPPEND用於將資料添加到一個大對象的末尾。
WRITEAPPEND(lob_loc IN OUT { BLOB | CLOB },
  amount BINARY_INTEGER, buffer { RAW | VARCHAR2 })
表 16. 參數說明
參數名稱描述
lob loc待添加資料的大對象。
amount緩衝區中位元組或字元的數量,這些位元組或字元將添加到大對象的尾部。
buffer用於返回部分被讀取的大對象內容。
  • 如果參數lob_loc是BLOB類型大對象,那麼參數buffer必須是RAW類型。
  • 如果參數lob_loc是CLOB類型大對象,那麼參數buffer必須是VARCHAR2類型。