【问题标题】:How to run REPLACE function in Oracle9i with strings larger than 4000 characters如何在 Oracle9i 中使用大于 4000 个字符的字符串运行 REPLACE 函数
【发布时间】:2009-10-06 21:46:27
【问题描述】:

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

块是:

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 的字符串?

【问题讨论】:

    标签: sql oracle plsql oracle9i


    【解决方案1】:

    没有要测试的 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) .

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多