如何在Oracle9i中使用大于4000个字符的字符串运行REPLACE函数

时间:2009-10-06 21:46:27

标签: sql oracle plsql oracle9i

当ln_length为4000个字符或更少时,我有以下PLSQL块成功,但当ln_length为>时,失败并显示“ORA-01460:未请求的未实现或不合理的转换”。 4000个字符。

该块是:

DECLARE
    ls_string VARCHAR2(32767);
    ls_temp VARCHAR2(32767);
    ln_length NUMBER := 4000;
BEGIN
    ls_string := '';
    FOR i IN 1..ln_length LOOP
      ls_string := ls_string || 'x';
    END LOOP;

    SELECT REPLACE(ls_string,'bob')
    INTO ls_temp FROM dual;
END;

我如何编写一段代码,以满足长达32k的字符串?

1 个答案:

答案 0 :(得分:4)

没有9i可以测试,但也许这会解决它:

取代:

SELECT REPLACE(ls_string,'bob')
INTO ls_temp FROM dual;

使用:

ls_temp := REPLACE(ls_string,'bob');

RDBMS引擎仅支持VARCHAR2最多4000个,而PL / SQL最多支持32767个。避免进入数据库进行REPLACE操作(无论如何都是这样)并且它似乎工作(至少w / 10g)