Data Type Oracle PLSQL

SQL>
SQL>
SQL> CREATE TABLE LOBS(
  2       lob_index INTEGER,
  3       CLOB_Locator CLOB);
Table created.
SQL>
SQL>
SQL> INSERT INTO LOBS VALUES(1,'Teach Yourself Oracle8i in 21 Days');
1 row created.
SQL> INSERT INTO LOBS VALUES(2,'Oracle Data Warehousing Unleashed');
1 row created.
SQL> INSERT INTO LOBS VALUES(3,'');
1 row created.
SQL> INSERT INTO LOBS VALUES(4,'Oracle Unleashed 2E');
1 row created.
SQL> INSERT INTO LOBS VALUES(5,EMPTY_CLOB());
1 row created.
SQL> INSERT INTO LOBS VALUES(6,EMPTY_CLOB());
1 row created.
SQL>
SQL> DECLARE
  2      Source_Lob   CLOB;
  3      Dest_Lob   CLOB;
  4      Write_Amount INTEGER := 10;
  5      Writing_Position INTEGER ;
  6      Buffer VARCHAR2(10) := 'Added Text';
  7  BEGIN
  8      SELECT CLOB_LOCATOR into Dest_LOB
  9           FROM LOBS
 10           WHERE LOB_INDEX = 5 FOR UPDATE; -- Locks Row for Update
 11      SELECT CLOB_LOCATOR into Source_LOB
 12           FROM LOBS
 13           WHERE LOB_INDEX = 1;
 14      DBMS_LOB.APPEND(Dest_LOB, Source_LOB);
 15      COMMIT;
 16      SELECT CLOB_LOCATOR into Source_LOB
 17           FROM LOBS
 18           WHERE LOB_INDEX = 6 FOR UPDATE;  -- Locks Row for Update
 19
 20      Writing_Position := DBMS_LOB.GETLENGTH(Source_Lob) + 1;
 21      DBMS_LOB.WRITE(Source_LOB,Write_Amount,Writing_Position,Buffer);
 22      COMMIT;
 23  END;
 24  /
PL/SQL procedure successfully completed.
SQL> drop table lobs;
Table dropped.
SQL> --