ORACLE-ORA-00997-LONG类型的使用

时间:2022-03-07 06:56:38

在ORACLE中,LONG类型不能直接作为条件进行查询,在翻阅资料后,找到一个函数,亲测有效,希望能帮到各位!

函数

CREATE OR REPLACE FUNCTION SSCP.LONG_TO_CHAR(in_rowid      rowid,

                                        in_owner      varchar,

                                        in_table_name varchar,

                                        in_column     varchar2)

  RETURN varchar AS

  text_c1 varchar2(32767);

  sql_cur varchar2(2000);

  --set serveroutput on size 10000000000;--  

begin

  DBMS_OUTPUT.ENABLE(buffer_size => null);

  sql_cur := 'select ' || in_column || ' from ' || in_owner || '.' ||

             in_table_name || ' where rowid = ' || chr(39) || in_rowid ||

             chr(39);

  dbms_output.put_line(sql_cur);

  execute immediate sql_cur

    into text_c1;

  text_c1 := substr(text_c1, 1, 4000);

  RETURN TEXT_C1;

END;

调用方式

SSCP.LONG_TO_CHAR(ROWID,用户,'表名',‘字段')

建议:建表时最好不要选择LONG类型