我有6個測試環境和1個生產環境。我創建了許多與Oracle視圖不同的報告,並且需要一種方法來在不同環境之間同步這些報告。將select語句插入表中 - ORA-06502
我想製作一個腳本,我可以運行,它將基本上輸出一個命令列表,我可以將其複製並粘貼到我的不同環境中以創建必要的視圖/公共同義詞和特權。
我必須把結果文本放到數據庫表中,因爲dbms_output.put_line
對它顯示的字符數有一定的限制。
我有以下,但如果我嘗試插入數據,我得到ORA-06502: PL/SQL: numeric or value error
。我猜這可能與字符文字沒有被轉義和不是什麼有關。
CREATE OR REPLACE PROCEDURE EXPORT_REPORTS AS
statements CLOB;
tmp_statement CLOB;
CURSOR all_views IS
SELECT
OWNER,
VIEW_NAME,
TEXT
FROM
ALL_VIEWS
WHERE
OWNER = 'PAS'
;
BEGIN
FOR v IN all_views LOOP
tmp_statement := 'CREATE OR REPLACE FORCE VIEW "' || v.OWNER || '"."' || v.VIEW_NAME || '" AS ' || CHR(13) || CHR(10) || v.TEXT;
statements := statements || tmp_statement;
END LOOP;
EXECUTE IMMEDIATE 'INSERT INTO VIEW_EXPORTS VALUES ('''|| statements || ''')';
END EXPORT_REPORTS;
任何想法我能做些什麼來嘗試解決這個問題? 如果這是因爲statements
變量中的某些文本包含單引號,那麼在將數據插入表之前,如何轉義該引號?
不正確。我已經使用CLOB工作。我只是將插入語句從「EXECUTE IMMEDIATE」更改爲「INSERT INTO ...」 – Lock