Re: How to convert LONG to VARCHAR2
Date: Fri, 12 Apr 2013 11:38:23 -0700 (PDT)
Message-ID: <1365791903.51073.YahooMailNeo_at_web121601.mail.ne1.yahoo.com>
I wonder if DATA_DEFAULT was NULL -- if it is no text will be returned.� I got it to work: SQL> CREATE OR REPLACE FUNCTION LONG_TO_CHAR
� 2��� ( in_table_name varchar,
� 3������������� in_column varchar2,
� 4������������� in_column_name varchar2,
� 5������������� in_tab_name varchar2)
� 6� RETURN varchar AS
� 7� text_c1 varchar2(32767);
� 8� sql_cur varchar2(2000);
� 9� begin
�10��������� sql_cur := 'select '||in_column||' from
�11��������� '||in_table_name||' where column_name = ' ||
�12��������� chr(39)||in_column_name||chr(39) ||' AND TABLE_NAME=' ||
�13��������� chr(39)||in_tab_name||chr(39); --1 AND ROWNUM = 1';
�14��������� dbms_output.put_line (sql_cur);
�15��������� execute immediate sql_cur into text_c1;
�16��������� text_c1 := substr(text_c1, 1, 4000);
�17��������� RETURN TEXT_C1;
�18� END;
�19� /
Function created.
SQL>
SQL> select long_to_char('USER_TAB_COLUMNS', 'DATA_DEFAULT', 'EMPNO', 'EMP') from dual;
LONG_TO_CHAR('USER_TAB_COLUMNS','DATA_DEFAULT','EMPNO','EMP')
9999
select DATA_DEFAULT from
������� USER_TAB_COLUMNS where column_name = 'EMPNO' AND
TABLE_NAME='EMP'
SQL> I modified the EMPNO column to have a default (it doesn't have one when the table is created).� Not doing that returned a NULL string.�
David Fitzjarrell
From: Eriovaldo Andrietta <ecandrietta_at_gmail.com> To: ORACLE-L <oracle-l_at_freelists.org> Sent: Friday, April 12, 2013 10:22 AM
Subject: How to convert LONG to VARCHAR2
Hi Friends,
How can I convert the column USER_TAB_COLUMNS.DATA_DEFAULT to VARCHAR2 in
order to compare the content with a VARCHAR2 column, using SQL or PL/SQL.
The column DATA_DEFAULT has LONG datatype.
I am using Oracle 11g database.
I used this function, but it did not work:
CREATE OR REPLACE FUNCTION LONG_TO_CHAR
� ( in_table_name varchar,
� � in_column varchar2,
� � in_column_name varchar2,
� � in_tab_name varchar2)
RETURN varchar AS
text_c1 varchar2(32767);
sql_cur varchar2(2000);
begin
sql_cur := 'select '||in_column||' from
'||in_table_name||' where column_name = ' || chr(39)||in_column_name||chr(39) ||' AND TABLE_NAME=' || chr(39)||in_tab_name||chr(39); --1 AND ROWNUM = 1';dbms_output.put_line (sql_cur);
execute immediate sql_cur into text_c1;
text_c1 := substr(text_c1, 1, 4000);
RETURN TEXT_C1;
END;
/
Best regards
Eriovaldo.
-- http://www.freelists.org/webpage/oracle-l -- http://www.freelists.org/webpage/oracle-lReceived on Fri Apr 12 2013 - 20:38:23 CEST