Mailing List
Home
Forum Home
Oracle List - by freelists.org
Oracle on SUSE Linux - Runing Oracle on SUSE Linux
Oracle database error code ...
www.freelists.org
Subjects
ORA 12540: TNS:internal limit restriction exceeded
ORA 12838 please : Is possible to append two times to the same table befo
ORA 12838 please : Is possible to append two times to the same table before
ora 04031
ora 12500 on windows
ORA 32004: obsolete and/or deprecated parameter(s) specified
ORA 01925: maximum of 30 enabled roles exceeded
ORA 01925: maximum of 30 enabled roles exceeded
ora 12500 on windows
ORA 01650, one idea
ORA 01650
ORA 4030
ORA 12838 please : Is possible to append two times to thesametable before do
ORA 12838 please : Is possible to append two times to thesame table before d
ORA 01536
ORA 03113 end of file on communication channel
ORA 32004: obsolete and/or deprecated parameter(s) specified
ORA 00600:
ORA 00020: maximum number of processes (%s) exceeded
ORA 01925: maximum of 30 enabled roles exceeded
ORA 3113 while creating a cluster database 9201 RAC on Linux with OCFS
ora 12500 on windows
ora 12500 on windows
ora 12500 on windows
ORA 01650, one idea
ora 12500 on windows
ora 12500 on windows
ora 12500 on windows
ORA 2000 Error Using DBMS STATS GATHER SCHEMA STATS
ORA 01650, one idea
ORA 01650, one idea
ORA 01650, one idea
ORA 01650
ORA 01650
ORA 01031
ORA 4030
ORA 4030
ORA 06502: PL/SQL: numeric or value error: Bulk Bind: Truncated Bind
ORA 01722 invalid number
 
How to convert long to char?

How to convert long to char?

2006-06-29       - By Daniel Fink

 Back
Reply:     1     2  

The technique I have used is to create a temporary table with a CLOB datatype,
insert the LONG data into the CLOB, then you can manipulate it.

I also used the following code to get around a dbms_metadata bug in 9i.

CREATE GLOBAL TEMPORARY TABLE parsed_view_text
 (view_name VARCHAR2(30),
  text_id NUMBER,
  view_text VARCHAR2(4000)
 ) ON COMMIT PRESERVE ROWS;

DECLARE
   num_iter NUMBER := 0;
   whole_clob CLOB;
   parsed_string VARCHAR2(32767);
   start_pos NUMBER := 1;
   num_chars NUMBER := 3000;

   CURSOR view_text_cur IS
      SELECT o.name view_name, v.text text, v.textlength text_length, v.cols
view_columns
      FROM sys.obj$ o,
           sys.view$ v
      WHERE o.obj# = v.obj#
        AND o.owner# = &&schema_id;

   view_text_rec view_text_cur%ROWTYPE;

BEGIN

  FOR view_text_rec IN view_text_cur
  LOOP
     whole_clob := TO_CLOB(view_text_rec.text);

     DBMS_OUTPUT.PUT_LINE('View Name: '||view_text_rec.view_name||' Text
Length :'|| view_text_rec.text_length);
     LOOP
        IF (view_text_rec.text_length - start_pos) < 3000
        THEN
             parsed_string := SUBSTR(whole_clob, start_pos);
             INSERT INTO parsed_view_text VALUES (view_text_rec.view_name,
(view_text_rec.view_columns + num_iter), parsed_string||CHR(10)||'/');
           EXIT;
        END if;
        parsed_string := SUBSTR(whole_clob, start_pos, 3000);
        num_chars := GREATEST(INSTR(parsed_string, ', ', -1, 1), INSTR(parsed
_string, ',"', -1, 1),
                              (INSTR(parsed_string, '),', -1, 1)+1), INSTR
(parsed_string, ')', -1, 1));
        parsed_string := SUBSTR(whole_clob, start_pos, num_chars);
        INSERT INTO parsed_view_text VALUES (view_text_rec.view_name, (view
_text_rec.view_columns + num_iter), parsed_string);
        start_pos := start_pos + num_chars;
        num_iter := num_iter + 1;
     END LOOP;
     COMMIT;
     start_pos := 1;
     num_chars := 3000;
     num_iter := 1;
  END LOOP;
END;
/


Regards,
Daniel Fink

Yechiel Adar <adar666@(protected)> wrote:
--
Adar Yechiel
Rechovot, Israel

--
http://www.freelists.org/webpage/oracle-l




The technique I have used is to create a temporary table with a CLOB datatype,
insert the LONG data into the CLOB, then you can manipulate it.<br><br>I also
used the following code to get around a dbms_metadata bug in 9i.<br><br>CREATE
GLOBAL TEMPORARY TABLE parsed_view_text <br>&nbsp; (view_name VARCHAR2(30), <br
>&nbsp;&nbsp; text_id NUMBER, <br>&nbsp;&nbsp; view_text VARCHAR2(4000)<br>&nbsp
; ) ON COMMIT PRESERVE ROWS;<br><br>DECLARE<br>&nbsp;&nbsp;&nbsp; num_iter
NUMBER := 0;<br>&nbsp;&nbsp;&nbsp; whole_clob CLOB;<br>&nbsp;&nbsp;&nbsp;
parsed_string VARCHAR2(32767);<br>&nbsp;&nbsp;&nbsp; start_pos NUMBER := 1;<br>
&nbsp;&nbsp;&nbsp; num_chars NUMBER := 3000;<br><br>&nbsp;&nbsp;&nbsp; CURSOR
view_text_cur IS <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT o.name view
_name, v.text text, v.textlength text_length, v.cols view_columns<br>&nbsp;&nbsp
;&nbsp;&nbsp;&nbsp;&nbsp; FROM sys.obj$ o,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.view$
v<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE o.obj# = v.obj#<br>&nbsp;&nbsp
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND o.owner# = &amp;&amp;schema_id;<br><br
>&nbsp;&nbsp;&nbsp; view_text_rec view_text_cur%ROWTYPE;<br><br>BEGIN<br><br>
&nbsp;&nbsp; FOR view_text_rec IN view_text_cur<br>&nbsp;&nbsp; LOOP<br>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; whole_clob := TO_CLOB(view_text_rec.text);<br>&nbsp;<br
>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.PUT_LINE('View Name: '||view_text
_rec.view_name||' Text Length :'|| view_text_rec.text_length);<br>&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; LOOP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF
(view_text_rec.text_length - start_pos) &lt; 3000<br>&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; THEN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parsed_string := SUBSTR(whole_clob, start_pos);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; INSERT INTO parsed_view_text VALUES
(view_text_rec.view_name, (view_text_rec.view_columns + num_iter), parsed
_string||CHR(10)||'/');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
;&nbsp;&nbsp; EXIT;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END if;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parsed_string := SUBSTR
(whole_clob, start_pos, 3000);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; num_chars := GREATEST(INSTR(parsed_string, ', ', -1, 1), INSTR(parsed
_string, ',"', -1, 1),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (INSTR(parsed_string, '),', -1,
1)+1), INSTR(parsed_string, ')', -1, 1));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; parsed_string := SUBSTR(whole_clob, start_pos, num_chars);<br
>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INSERT INTO parsed_view_text
VALUES (view_text_rec.view_name,
(view_text_rec.view_columns + num_iter), parsed_string);<br>&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start_pos := start_pos + num_chars;<br>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num_iter := num_iter + 1;<br>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; END LOOP;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMIT;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start_pos := 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
num_chars := 3000;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num_iter := 1;<br>&nbsp;
&nbsp; END LOOP;<br>END;<br>/<br><br><br>Regards,<br>Daniel Fink<br><br><b><i
>Yechiel Adar &lt;adar666@(protected)&gt;</i></b> wrote:<blockquote class=
"replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px;
padding-left: 5px;"> <br>-- <br>Adar Yechiel<br>Rechovot, Israel<br><br>--<br
>http://www.freelists.org/webpage/oracle-l<br><br><br></blockquote><br>