在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类型