1
我在Oracle數據庫中執行了以下代碼,但遇到視圖名稱錯誤不存在。任何人都可以看看它嗎?立即執行DDL語句
Declare
Stmt varchar2(2000);
Var number;
Begin
Stmt:='create or replace view emp_dept_v as select * from emp';
Execute immediate stmt;
Select count(*) into var from emp_dept_v;
Dbms_output. Put_line(var);
End;
我知道DDL語句是自動提交的,但在這種情況下,我必須在執行immediate語句後添加一個提交語句來解決問題。
我很好走。但是,請您澄清一下爲什麼它不起作用。我的意思是我們嘗試在上一行創建後檢索視圖的值。 – Satyaki
@Satyaki正如我所提到的,當你選擇的表不存在時,PL/SQL甚至不會「編譯」。在EXECUTE immediate字符串中的任何SQL在編譯期間都將被忽略。只有在編譯成功後,執行立即執行的SQL纔會真正執行。 –
謝謝你。那麼爲什麼當我在execute immediate之後向代碼添加一個提交時它會工作? – Satyaki