這個片段PL/SQL代碼段運行W/O錯誤,除非我取消for
循環,在這種情況下,我越來越困惑與動態SQL
Error report:
ORA-06550: line 12, column 41:
PL/SQL: ORA-00942: table or view does not exist
我的問題是,爲什麼用for循環註釋掉出現錯誤?
set serveroutput on
declare
v_sql varchar2(2000);
v_tmp number;
begin
dbms_output.enable(null);
v_sql := 'CREATE TABLE tmp_bank_codes (name varchar2(256), code varchar2(256))';
dbms_output.put_line('Will do ' || v_sql);
execute immediate v_sql;
v_sql := 'INSERT INTO tmp_bank_codes (name, code) VALUES (''Bank of America'', ''BOANY (NY)'')';
dbms_output.put_line('Will do ' || v_sql);
execute immediate v_sql;
--for bank_code in (select name, code from tmp_bank_codes) loop
-- select 1 into v_tmp from dual;
--end loop;
execute immediate 'drop table tmp_bank_codes';
rollback;
end;
/
你有什麼問題嗎? –
我的問題是爲什麼'for'循環取消註釋時發生錯誤。 –
在Oracle中即時創建表並不是一個好主意。你最好一勞永逸地創建'tmp_bank_codes'作爲全局臨時表,那麼你不需要重新創建或刪除它(此外,它也會使此代碼對於併發使用安全)。 –