我有PLSQL那成功时ln_length是4000个字符或更少,但无法用“ORA-01460:未实现或不合理的转换请求”的下面的块。当ln_length是> 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?

有帮助吗?

解决方案

不要有9I与测试,但也许这将绕过它:

取代:

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

使用:

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

在RDBMS发动机只支持VARCHAR2的最大长度为4000,而向上PL / SQL支持到32767避免去的数据库中替换操作(这是不必要的反正)和它似乎工作(至少瓦特/ 10G)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top