2009-10-06 80 views
0

當ln_length爲4000個字符或更少時,我有以下PLSQL成功塊,但當ln_length> 1時,「ORA-01460:未實現或不合理轉換請求」 4000個字符。如何在字符串大於4000個字符的情況下在Oracle9i中運行REPLACE函數

塊是:

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?

回答

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)。

+0

是的,破解它,謝謝! – darreljnz 2009-10-06 23:12:54

相關問題