<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FLarge_Objects%2FCLOB</id>
		<title>Oracle PL/SQL Tutorial/Large Objects/CLOB - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FLarge_Objects%2FCLOB"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/CLOB&amp;action=history"/>
		<updated>2026-04-13T14:24:43Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/CLOB&amp;diff=4231&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/CLOB&amp;diff=4231&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/CLOB&amp;diff=4232&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/CLOB&amp;diff=4232&amp;oldid=prev"/>
				<updated>2010-05-26T10:08:59Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Adding Content to a CLOB==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE MyTable (&lt;br /&gt;
  2    id          INTEGER PRIMARY KEY,&lt;br /&gt;
  3    clob_column CLOB NOT NULL&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myTable(id, clob_column) VALUES (1, EMPTY_CLOB());&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE myTable&lt;br /&gt;
  2  SET clob_column = &amp;quot;AAAAA&amp;quot;&lt;br /&gt;
  3  WHERE id = 1;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from myTable;&lt;br /&gt;
        ID CLOB_COLUMN&lt;br /&gt;
---------- --------------------------------------------------------------------------------&lt;br /&gt;
         1 AAAAA&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== close Clob data pointer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myClob&lt;br /&gt;
  2  (id NUMBER PRIMARY KEY,&lt;br /&gt;
  3   clob_data CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myClob VALUES (101,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2&lt;br /&gt;
  3    clob_pointer CLOB;&lt;br /&gt;
  4&lt;br /&gt;
  5    v_buf VARCHAR2(1000);&lt;br /&gt;
  6&lt;br /&gt;
  7    Amount BINARY_INTEGER :=1000;&lt;br /&gt;
  8&lt;br /&gt;
  9    Position INTEGER :=1;&lt;br /&gt;
 10  BEGIN&lt;br /&gt;
 11    v_buf :=rpad(&amp;quot;A&amp;quot;,1000,&amp;quot;A&amp;quot;);&lt;br /&gt;
 12&lt;br /&gt;
 13    insert into myClob values (1,EMPTY_CLOB());&lt;br /&gt;
 14&lt;br /&gt;
 15    SELECT clob_data INTO clob_pointer FROM myClob WHERE id = 1 FOR UPDATE;&lt;br /&gt;
 16&lt;br /&gt;
 17    DBMS_LOB.OPEN (clob_pointer,DBMS_LOB.LOB_READWRITE);&lt;br /&gt;
 18&lt;br /&gt;
 19    FOR i IN 1..500 LOOP&lt;br /&gt;
 20&lt;br /&gt;
 21      DBMS_LOB.WRITE (clob_pointer,Amount,Position,v_buf);&lt;br /&gt;
 22&lt;br /&gt;
 23      Position :=Position +Amount;&lt;br /&gt;
 24&lt;br /&gt;
 25    END LOOP;&lt;br /&gt;
 26&lt;br /&gt;
 27    DBMS_LOB.CLOSE (clob_pointer);&lt;br /&gt;
 28  END;&lt;br /&gt;
 29  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myClob;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Compare date value after to_char() and trim()==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table gift(&lt;br /&gt;
  2           gift_id                integer         primary key&lt;br /&gt;
  3          ,emp_id                integer&lt;br /&gt;
  4          ,register_date              date not null&lt;br /&gt;
  5          ,total_price        number(7,2)&lt;br /&gt;
  6          ,deliver_date           date&lt;br /&gt;
  7          ,deliver_time           varchar2(7)&lt;br /&gt;
  8          ,payment        varchar2(2)&lt;br /&gt;
  9          ,emp_no                 number(3,0)&lt;br /&gt;
 10          ,deliver_name           varchar2(35)&lt;br /&gt;
 11          ,message        varchar2(100)&lt;br /&gt;
 12  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into gift(gift_id,emp_id,register_date,total_price,deliver_date,deliver_time,payment,emp_no,deliver_name,message)values&lt;br /&gt;
  2                 (1,1,&amp;quot;14-Feb-1999&amp;quot;, 123.12, &amp;quot;14-Feb-1999&amp;quot;, &amp;quot;12 noon&amp;quot;, &amp;quot;CA&amp;quot;,1, null, &amp;quot;Happy Birthday to you&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into gift(gift_id  ,emp_id ,register_date ,total_price ,deliver_date ,deliver_time ,payment ,emp_no,deliver_name ,message)values&lt;br /&gt;
  2                 (2,1,&amp;quot;14-Feb-1999&amp;quot;, 50.98, &amp;quot;14-feb-1999&amp;quot;, &amp;quot;1 pm&amp;quot;, &amp;quot;CA&amp;quot;,7, &amp;quot;name1&amp;quot;, &amp;quot;Happy Birthday&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into gift(gift_id  ,emp_id ,register_date ,total_price ,deliver_date ,deliver_time,payment ,emp_no,deliver_name ,message )values&lt;br /&gt;
  2                 (3, 2,&amp;quot;14-Feb-1999&amp;quot;, 35.99, &amp;quot;14-feb-1999&amp;quot;, &amp;quot;1 pm&amp;quot;, &amp;quot;VS&amp;quot;,2, &amp;quot;Tom&amp;quot;, &amp;quot;Happy Birthday&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into gift(gift_id  ,emp_id ,register_date ,total_price ,deliver_date ,deliver_time,payment ,emp_no,deliver_name ,message )values&lt;br /&gt;
  2                 (4, 2,&amp;quot;14-Feb-1999&amp;quot;, 19.95, &amp;quot;14-feb-1999&amp;quot;, &amp;quot;5 pm&amp;quot;, &amp;quot;CA&amp;quot;,2, &amp;quot;Mary&amp;quot;, &amp;quot;Happy Birthday&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into gift(gift_id  ,emp_id ,register_date ,total_price ,deliver_date ,deliver_time,payment ,emp_no,deliver_name ,message)values&lt;br /&gt;
  2                 (5, 6,&amp;quot;4-mar-1999&amp;quot;, 10.95, &amp;quot;5-mar-1999&amp;quot;, &amp;quot;4:30 pm&amp;quot;, &amp;quot;VS&amp;quot;, 2, &amp;quot;Jack&amp;quot;, &amp;quot;Happy Birthday&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select gift_id, register_date&lt;br /&gt;
  2    from gift&lt;br /&gt;
  3   where trim(to_char(register_date, &amp;quot;Month&amp;quot;)) = &amp;quot;February&amp;quot;;&lt;br /&gt;
   GIFT_ID REGISTER_&lt;br /&gt;
---------- ---------&lt;br /&gt;
         1 14-FEB-99&lt;br /&gt;
         2 14-FEB-99&lt;br /&gt;
         3 14-FEB-99&lt;br /&gt;
         4 14-FEB-99&lt;br /&gt;
4 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table gift;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Convert string to clob==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2&lt;br /&gt;
  3    c1 clob := to_clob(&amp;quot;abc&amp;quot;);&lt;br /&gt;
  4    c2 clob;&lt;br /&gt;
  5&lt;br /&gt;
  6  begin&lt;br /&gt;
  7      case c1&lt;br /&gt;
  8           when to_clob(&amp;quot;abc&amp;quot;) then dbms_output.put_line(&amp;quot;abc&amp;quot;);&lt;br /&gt;
  9           when to_clob(&amp;quot;def&amp;quot;) then dbms_output.put_line(&amp;quot;def&amp;quot;);&lt;br /&gt;
 10      end case;&lt;br /&gt;
 11&lt;br /&gt;
 12      c2 := case c1&lt;br /&gt;
 13         when to_clob(&amp;quot;abc&amp;quot;) then &amp;quot;abc&amp;quot;&lt;br /&gt;
 14         when to_clob(&amp;quot;def&amp;quot;) then &amp;quot;def&amp;quot;&lt;br /&gt;
 15      end;&lt;br /&gt;
 16&lt;br /&gt;
 17      dbms_output.put_line(c2);&lt;br /&gt;
 18&lt;br /&gt;
 19  end;&lt;br /&gt;
 20  /&lt;br /&gt;
abc&lt;br /&gt;
abc&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Copy clob data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable (&lt;br /&gt;
  2    id          INTEGER PRIMARY KEY,&lt;br /&gt;
  3    clobData CLOB NOT NULL&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE initClob(clob_par IN OUT CLOB,id_par IN INTEGER) IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    SELECT clobData INTO clob_par FROM myTable WHERE id = id_par;&lt;br /&gt;
  4  END initClob;&lt;br /&gt;
  5  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE readClob(id_par IN INTEGER) IS&lt;br /&gt;
  2    clobVariable CLOB;&lt;br /&gt;
  3    charVariable VARCHAR2(50);&lt;br /&gt;
  4    offsetPos INTEGER := 1;&lt;br /&gt;
  5    amount_var INTEGER := 50;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    initClob(clobVariable, id_par);&lt;br /&gt;
  8    DBMS_LOB.READ(clobVariable, amount_var, offsetPos, charVariable);&lt;br /&gt;
  9    DBMS_OUTPUT.PUT_LINE(&amp;quot;charVariable = &amp;quot; || charVariable);&lt;br /&gt;
 10    DBMS_OUTPUT.PUT_LINE(&amp;quot;amount_var = &amp;quot; || amount_var);&lt;br /&gt;
 11  END readClob;&lt;br /&gt;
 12  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE copy_example IS&lt;br /&gt;
  2    clobSrc CLOB;&lt;br /&gt;
  3    clobDest CLOB;&lt;br /&gt;
  4    src_offsetPos INTEGER := 1;&lt;br /&gt;
  5    dest_offsetPos INTEGER := 7;&lt;br /&gt;
  6    amount_var INTEGER := 5;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8    SELECT clobData INTO clobSrc FROM myTable WHERE id = 2;&lt;br /&gt;
  9    SELECT clobData INTO clobDest FROM myTable WHERE id = 1 FOR UPDATE;&lt;br /&gt;
 10&lt;br /&gt;
 11    readClob(1);&lt;br /&gt;
 12    DBMS_LOB.COPY(clobDest, clobSrc, amount_var,dest_offsetPos, src_offsetPos);&lt;br /&gt;
 13    readClob(1);&lt;br /&gt;
 14&lt;br /&gt;
 15    ROLLBACK;&lt;br /&gt;
 16  END copy_example;&lt;br /&gt;
 17  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Creating Tables Containing CLOB Objects==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE MyTable (&lt;br /&gt;
  2    id          INTEGER PRIMARY KEY,&lt;br /&gt;
  3    clob_column CLOB NOT NULL&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; desc myTable;&lt;br /&gt;
 Name           Null?    Type&lt;br /&gt;
 ---------------&lt;br /&gt;
 ID             NOT NULL NUMBER(38)&lt;br /&gt;
 CLOB_COLUMN    NOT NULL CLOB&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Initialize CLOB column==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE MyTable (&lt;br /&gt;
  2    id          INTEGER PRIMARY KEY,&lt;br /&gt;
  3    clob_column CLOB NOT NULL&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myTable(id, clob_column) VALUES (1, EMPTY_CLOB());&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from mytable;&lt;br /&gt;
        ID CLOB_COLUMN&lt;br /&gt;
---------- -----------&lt;br /&gt;
         1&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Insert into clob column==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myClob&lt;br /&gt;
  2  (id NUMBER PRIMARY KEY,&lt;br /&gt;
  3   clob_data CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myClob VALUES (102,RPAD(&amp;quot;AAAAAAAAAAAAAAAAAA&amp;quot;,40000,&amp;quot;A&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myClob;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Loading data to the CLOB by using BFILE==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;CLOBs are very useful structures. You can store lots of text information in a CLOB.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table catalog&lt;br /&gt;
  2  (id number,&lt;br /&gt;
  3   name VARCHAR2(2000),&lt;br /&gt;
  4   manual_cl CLOB,&lt;br /&gt;
  5   firstpage_bl BLOB,&lt;br /&gt;
  6   mastertxt_bf BFILE&lt;br /&gt;
  7   );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create directory IO as &amp;quot;C:\IO&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; --grant read, write on directory IO to public;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into catalog(id, name, mastertxt_bf) values (1, &amp;quot;TEXT.HTM&amp;quot;, BFILENAME (&amp;quot;IO&amp;quot;, &amp;quot;text.htm&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      v_file_bf     BFILE;&lt;br /&gt;
  3      v_manual_cl   CLOB;&lt;br /&gt;
  4      lang_ctx      NUMBER := DBMS_LOB.default_lang_ctx;&lt;br /&gt;
  5      charset_id    NUMBER := 0;&lt;br /&gt;
  6      src_offset    NUMBER := 1;&lt;br /&gt;
  7      dst_offset    NUMBER := 1;&lt;br /&gt;
  8      warning       NUMBER;&lt;br /&gt;
  9  begin&lt;br /&gt;
 10      update catalog set manual_cl = EMPTY_CLOB() where id = 1;&lt;br /&gt;
 11&lt;br /&gt;
 12      select mastertxt_bf, manual_cl into v_file_bf, v_manual_cl from catalog where id = 1;&lt;br /&gt;
 13&lt;br /&gt;
 14      DBMS_LOB.fileopen(v_file_bf, DBMS_LOB.file_readonly);&lt;br /&gt;
 15      DBMS_LOB.loadclobfromfile (v_manual_cl, v_file_bf,DBMS_LOB.getlength (v_file_bf),&lt;br /&gt;
 16                              src_offset, dst_offset,charset_id, lang_ctx,warning);&lt;br /&gt;
 17      DBMS_LOB.fileclose (v_file_bf);&lt;br /&gt;
 18  end;&lt;br /&gt;
 19  /&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-22288: file or LOB operation FILEOPEN failed&lt;br /&gt;
The system cannot find the path specified.&lt;br /&gt;
ORA-06512: at &amp;quot;SYS.DBMS_LOB&amp;quot;, line 523&lt;br /&gt;
ORA-06512: at line 14&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop directory IO;&lt;br /&gt;
Directory dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table catalog;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Obtain Clob data pointer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myClob&lt;br /&gt;
  2  (id NUMBER PRIMARY KEY,&lt;br /&gt;
  3   clob_data CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myClob VALUES (101,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    clob_pointer CLOB;&lt;br /&gt;
  3    v_buf VARCHAR2(1000);&lt;br /&gt;
  4    Amount BINARY_INTEGER :=1000;&lt;br /&gt;
  5    Position INTEGER :=1;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    v_buf :=rpad(&amp;quot;A&amp;quot;,1000,&amp;quot;A&amp;quot;);&lt;br /&gt;
  8&lt;br /&gt;
  9    insert into myClob values (5,EMPTY_CLOB());&lt;br /&gt;
 10&lt;br /&gt;
 11    SELECT clob_data INTO clob_pointer FROM myClob WHERE id =5 FOR UPDATE;&lt;br /&gt;
 12&lt;br /&gt;
 13    DBMS_LOB.OPEN (clob_pointer,DBMS_LOB.LOB_READWRITE);&lt;br /&gt;
 14&lt;br /&gt;
 15    FOR i IN 1..500 LOOP&lt;br /&gt;
 16&lt;br /&gt;
 17      DBMS_LOB.WRITE (clob_pointer,Amount,Position,v_buf);&lt;br /&gt;
 18&lt;br /&gt;
 19      Position :=Position +Amount;&lt;br /&gt;
 20&lt;br /&gt;
 21    END LOOP;&lt;br /&gt;
 22&lt;br /&gt;
 23    DBMS_LOB.CLOSE (clob_pointer);&lt;br /&gt;
 24  END;&lt;br /&gt;
 25  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myClob;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Open the CLOB==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myClob&lt;br /&gt;
  2  (id NUMBER PRIMARY KEY,&lt;br /&gt;
  3   clob_data CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    clob_pointer CLOB;&lt;br /&gt;
  3    v_Buf VARCHAR2(1000);&lt;br /&gt;
  4    Amount BINARY_INTEGER :=1000;&lt;br /&gt;
  5    Position INTEGER :=1;&lt;br /&gt;
  6    fp UTL_FILE.FILE_TYPE;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8&lt;br /&gt;
  9    insert into myClob values (1,EMPTY_CLOB());&lt;br /&gt;
 10&lt;br /&gt;
 11    SELECT clob_data INTO clob_pointer FROM myClob WHERE id = 1;&lt;br /&gt;
 12&lt;br /&gt;
 13    if (DBMS_LOB.ISOPEN(clob_pointer)!=1) then&lt;br /&gt;
 14&lt;br /&gt;
 15      DBMS_LOB.OPEN (clob_pointer,DBMS_LOB.LOB_READONLY);&lt;br /&gt;
 16&lt;br /&gt;
 17    end if;&lt;br /&gt;
 18&lt;br /&gt;
 19    fp :=UTL_FILE.FOPEN(&amp;quot;BFILE_DIR&amp;quot;,&amp;quot;output.dat&amp;quot;,&amp;quot;w&amp;quot;);&lt;br /&gt;
 20&lt;br /&gt;
 21    LOOP&lt;br /&gt;
 22      BEGIN&lt;br /&gt;
 23&lt;br /&gt;
 24        DBMS_LOB.READ (clob_pointer, Amount, Position, v_Buf);&lt;br /&gt;
 25&lt;br /&gt;
 26        UTL_FILE.PUT_LINE(fp, v_Buf, TRUE);&lt;br /&gt;
 27&lt;br /&gt;
 28        Position :=Position + Amount;&lt;br /&gt;
 29      EXCEPTION&lt;br /&gt;
 30        WHEN NO_DATA_FOUND THEN&lt;br /&gt;
 31          EXIT;&lt;br /&gt;
 32      END;&lt;br /&gt;
 33    END LOOP;&lt;br /&gt;
 34&lt;br /&gt;
 35    UTL_FILE.FCLOSE(fp);&lt;br /&gt;
 36&lt;br /&gt;
 37    DBMS_LOB.CLOSE (clob_pointer);&lt;br /&gt;
 38  END;&lt;br /&gt;
 39  /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myClob;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Performing basic string operations on CLOBs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table catalog&lt;br /&gt;
  2  (&lt;br /&gt;
  3   id number,&lt;br /&gt;
  4   name VARCHAR2(2000),&lt;br /&gt;
  5   manual_cl CLOB,&lt;br /&gt;
  6   firstpage_bl BLOB,&lt;br /&gt;
  7   mastertxt_bf BFILE&lt;br /&gt;
  8   );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create directory IO as &amp;quot;C:\IO&amp;quot;;&lt;br /&gt;
Directory created.&lt;br /&gt;
SQL&amp;gt; --grant read, write on directory IO to public;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into catalog(id, name, mastertxt_bf) values (1, &amp;quot;TEXT.HTM&amp;quot;, BFILENAME (&amp;quot;IO&amp;quot;, &amp;quot;text.htm&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      v_manual_cl   CLOB;&lt;br /&gt;
  3      v_nr          NUMBER;&lt;br /&gt;
  4      v_tx          VARCHAR2 (2000);&lt;br /&gt;
  5      v_add_tx      VARCHAR2 (2000):=&amp;quot;Loaded: &amp;quot;||TO_CHAR(SYSDATE,&amp;quot;mm/dd/yyyy hh24:mi&amp;quot;);&lt;br /&gt;
  6  begin&lt;br /&gt;
  7      select manual_cl into v_manual_cl from catalog where id = 1&lt;br /&gt;
  8      for update;&lt;br /&gt;
  9&lt;br /&gt;
 10      DBMS_LOB.writeappend (v_manual_cl,LENGTH (v_add_tx), v_add_tx);&lt;br /&gt;
 11&lt;br /&gt;
 12      v_nr := INSTR (v_manual_cl, &amp;quot;Loaded:&amp;quot;, -1);&lt;br /&gt;
 13      v_tx := SUBSTR (v_manual_cl, v_nr);&lt;br /&gt;
 14      DBMS_OUTPUT.put_line (v_tx);&lt;br /&gt;
 15  end;&lt;br /&gt;
 16&lt;br /&gt;
 17  drop table catalog;&lt;br /&gt;
 18&lt;br /&gt;
 19  drop directory IO;&lt;br /&gt;
 20&lt;br /&gt;
 21  --Keep in mind that LOB pointers are transaction dependent. This means that if you have a COMMIT command in your code, the LOB pointer could become invalid (not pointing to anything) and you may not be able to perform some operations by using that locator.&lt;br /&gt;
 22&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Read clob data to varchar2 type variable==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable (&lt;br /&gt;
  2    id          INTEGER PRIMARY KEY,&lt;br /&gt;
  3    clobData    CLOB NOT NULL&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE initClob(clob_par IN OUT CLOB,id_par IN INTEGER) IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    SELECT clobData INTO clob_par FROM myTable WHERE id = id_par;&lt;br /&gt;
  4  END initClob;&lt;br /&gt;
  5  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE readClob(id_par IN INTEGER) IS&lt;br /&gt;
  2    clobVariable CLOB;&lt;br /&gt;
  3    charVariable VARCHAR2(50);&lt;br /&gt;
  4    offsetPos INTEGER := 1;&lt;br /&gt;
  5    amount_var INTEGER := 50;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    initClob(clobVariable, id_par);&lt;br /&gt;
  8    DBMS_LOB.READ(clobVariable, amount_var, offsetPos, charVariable);&lt;br /&gt;
  9    DBMS_OUTPUT.PUT_LINE(&amp;quot;charVariable = &amp;quot; || charVariable);&lt;br /&gt;
 10    DBMS_OUTPUT.PUT_LINE(&amp;quot;amount_var = &amp;quot; || amount_var);&lt;br /&gt;
 11  END readClob;&lt;br /&gt;
 12  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE write_example(id_par IN INTEGER) IS&lt;br /&gt;
  2    clobVariable CLOB;&lt;br /&gt;
  3    charVariable VARCHAR2(10) := &amp;quot;pretty&amp;quot;;&lt;br /&gt;
  4    offsetPos INTEGER := 7;&lt;br /&gt;
  5    amount_var INTEGER := 6;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    SELECT clobData INTO clobVariable FROM myTable WHERE id = id_par FOR UPDATE;&lt;br /&gt;
  8&lt;br /&gt;
  9    readClob(1);&lt;br /&gt;
 10    DBMS_LOB.WRITE(clobVariable, amount_var, offsetPos, charVariable);&lt;br /&gt;
 11    readClob(1);&lt;br /&gt;
 12&lt;br /&gt;
 13  END write_example;&lt;br /&gt;
 14  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Read clob type data, DBMS_LOB.READ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable (&lt;br /&gt;
  2    id          INTEGER PRIMARY KEY,&lt;br /&gt;
  3    clob_column CLOB NOT NULL&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE initClob(clob_par IN OUT CLOB,id_par IN INTEGER) IS&lt;br /&gt;
  2  BEGIN&lt;br /&gt;
  3    SELECT clob_column INTO clob_par FROM myTable WHERE id = id_par;&lt;br /&gt;
  4  END initClob;&lt;br /&gt;
  5  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE readClob(id_par IN INTEGER) IS&lt;br /&gt;
  2    clob_var CLOB;&lt;br /&gt;
  3    char_buffer_var VARCHAR2(50);&lt;br /&gt;
  4    offset INTEGER := 1;&lt;br /&gt;
  5    amount_var INTEGER := 50;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    initClob(clob_var, id_par);&lt;br /&gt;
  8    DBMS_LOB.READ(clob_var, amount_var, offset, char_buffer_var);&lt;br /&gt;
  9    DBMS_OUTPUT.PUT_LINE(&amp;quot;char_buffer_var = &amp;quot; || char_buffer_var);&lt;br /&gt;
 10    DBMS_OUTPUT.PUT_LINE(&amp;quot;amount_var = &amp;quot; || amount_var);&lt;br /&gt;
 11  END readClob;&lt;br /&gt;
 12  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Reading and Writing to a CLOB==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myClob&lt;br /&gt;
  2  (id NUMBER PRIMARY KEY,&lt;br /&gt;
  3   clob_data CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myClob VALUES (101,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    clob_pointer CLOB;&lt;br /&gt;
  3    v_buf VARCHAR2(1000);&lt;br /&gt;
  4    Amount BINARY_INTEGER :=1000;&lt;br /&gt;
  5    Position INTEGER :=1;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    v_buf :=rpad(&amp;quot;A&amp;quot;,1000,&amp;quot;A&amp;quot;);&lt;br /&gt;
  8&lt;br /&gt;
  9    insert into myClob values (1 ,EMPTY_CLOB());&lt;br /&gt;
 10&lt;br /&gt;
 11    commit;&lt;br /&gt;
 12&lt;br /&gt;
 13    SELECT clob_data INTO clob_pointer FROM myClob WHERE id = 1 FOR UPDATE;&lt;br /&gt;
 14    DBMS_LOB.OPEN (clob_pointer,DBMS_LOB.LOB_READWRITE);&lt;br /&gt;
 15&lt;br /&gt;
 16    FOR i IN 1..500 LOOP&lt;br /&gt;
 17&lt;br /&gt;
 18      DBMS_LOB.WRITE (clob_pointer,Amount,Position,v_buf);&lt;br /&gt;
 19&lt;br /&gt;
 20      Position :=Position +Amount;&lt;br /&gt;
 21&lt;br /&gt;
 22    END LOOP;&lt;br /&gt;
 23&lt;br /&gt;
 24    DBMS_LOB.CLOSE (clob_pointer);&lt;br /&gt;
 25&lt;br /&gt;
 26  END;&lt;br /&gt;
 27  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myClob;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Update clob data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myClobTable (id NUMBER,clob_data CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myLongTable (id NUMBER,long_data LONG);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myLongTable VALUES (100,RPAD(&amp;quot;A&amp;quot;,200000,&amp;quot;A&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update myClobTable set clob_data =(select to_lob(long_data)from&lt;br /&gt;
  2                  myLongTable where id =100)&lt;br /&gt;
  3&lt;br /&gt;
SQL&amp;gt; drop table myLongTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myClobTable;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>