Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / System Packages
 

DBMS_LOB READ

SQL> SQL> create table myTable   2  (key NUMBER PRIMARY KEY   3  ,col_blob BLOB   4  ,col_clob CLOB); Table created. SQL> SQL> INSERT INTO myTable(key, col_blob, col_clob) VALUES(1, HEXTORAW('101F'), 'ZYXW'); 1 row created. SQL> SQL> INSERT INTO myTable(key, col_blob, col_clob) VALUES(2, HEXTORAW('111101F'), 'ABCD'); 1 row created. SQL> SQL> CREATE OR REPLACE PROCEDURE sp_inmyTable2   2  IS   3   4      v_key1      myTable.key%TYPE;   5      blobValue1      myTable.col_blob%TYPE;   6      clobValue1      myTable.col_clob%TYPE;   7      v_key2      myTable.key%TYPE;   8      blobValue2      myTable.col_blob%TYPE;   9      clobValue2      myTable.col_clob%TYPE;  10      v_buffer    VARCHAR2(1000);  11      v_offset    NUMBER;  12      v_amount    NUMBER;  13      v_dest_offset   NUMBER := 1;  14      v_src_offset    NUMBER := 1;  15  16  17  BEGIN  18  19      SELECT key, col_blob, col_clob  20      INTO v_key1, blobValue1, clobValue1  21      FROM myTable  22      WHERE key = 1  23      FOR UPDATE;  24  25      SELECT key, col_blob, col_clob  26      INTO v_key2, blobValue2, clobValue2  27      FROM myTable  28      WHERE key = 2  29      FOR UPDATE;  30  31      v_amount := 80;  32      v_offset := 1;  33      DBMS_LOB.READ (clobValue1, v_amount, v_offset, v_buffer);  34      DBMS_OUTPUT.PUT_LINE ('Clob1 Contents => ' ||  v_buffer);  35  36      v_amount := 80;  37      v_offset := 1;  38      DBMS_LOB.READ (clobValue2, v_amount, v_offset, v_buffer);  39      DBMS_OUTPUT.PUT_LINE ('Clob2 Contents => ' ||  v_buffer);  40  41      v_amount := 80;  42      v_offset := 1;  43      DBMS_LOB.COPY (clobValue1, clobValue2, v_amount, v_dest_offset, v_src_offset);  44  45      v_amount := 80;  46      v_offset := 1;  47      DBMS_LOB.READ (clobValue1, v_amount, v_offset, v_buffer);  48      DBMS_OUTPUT.PUT_LINE ('Clob1 Contents => ' ||  v_buffer);  49  50      v_amount := 80;  51      v_offset := 1;  52      DBMS_LOB.READ (clobValue2, v_amount, v_offset, v_buffer);  53      DBMS_OUTPUT.PUT_LINE ('Clob2 Contents => ' ||  v_buffer);  54  55  END;  56  / Procedure created. SQL> exec sp_inmyTable2 Clob1 Contents => ZYXW Clob2 Contents => ABCD Clob1 Contents => ABCD Clob2 Contents => ABCD PL/SQL procedure successfully completed. SQL> SQL> drop table myTable; Table dropped. SQL>