我正在使用oracle 11g。每當我遇到大於varchar2大小限制的字符串時,我在sql server中使用將數據拆分爲如下的多個變量,然後在執行時加入它們。不過,甲骨文似乎預計在執行前會有32K的組合大小。我得到「ORA-20000:ORU-10028:行長度溢出,每行32767字節的限制」錯誤。Oracle - 如何處理變量中的32K +字符串長度
我在oralce腳本中使用這些變量(不是存儲過程)。最後2條語句拋出上述錯誤,並單獨顯示該值。 在此先感謝。
DECLARE
sViewQuery varchar2(32000);
sViewSelectQuery varchar2(32000);
BEGIN
---Assign values of 32,000 letter string (dynamic query)
sViewSelectQuery:='32K string...';
sViewQuery:='32K string..';
DBMS_OUTPUT.PUT_LINE(sViewQuery||sViewSelectQuery);
EXECUTE IMMEDIATE sViewQuery||sViewSelectQuery;
END;
你試過CLOB? – Annjawn
即使使用'clob',你也不能直接分配超過32k,你需要通過將所有部分附加到一個變量中來建立clob值。你不能連接(因爲這會產生'varchar2',並且會太大),或者在整個事情上使用'dbms_output'。我認爲,這就是拋出當前錯誤的原因,但是如果它立即執行,立即執行。 –
使用clob。請參閱[這裏](http://stackoverflow.com/questions/10803095/not-able-to-run-large-dynamic-select-query-in-stored-procedure/10803440#10803440)舉例 – tbone