如何运行REPLACE功能在Oracle9i中有超过4000个字符的字符串较大
题
我有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)
不隶属于 StackOverflow