oracle報錯pls-00103,在使用begin-end塊的時候(動態SQL)

報錯截圖:

170335982.jpg

原因:drop,create等爲DDL語句,不能在塊中直接使用

解決方法:將語句轉化爲變量,使用動態SQL來進行執行DDL語句(v_sql:='';execute immediate v_sql;)


DECLARE

sql1 VARCHAR2(100);

sql2 VARCHAR2(100);

BEGIN

 sql1:='DROP TABLE test_he';     --(注:oracle塊中賦值,使用:=,不是=,別用錯了)

 EXECUTE IMMEDIATE sql1;


 sql2:='CREATE TABLE test_he AS   SELECT * from t_bpm_form_info WHERE 1=0';

 EXECUTE IMMEDIATE sql2;

 END;

這樣即可成功創建。(包含存儲過程、觸發器等中的begin-end塊使用DDL語法時)


(此報錯,多數爲語法錯誤,認真檢查。數據庫版本問題,某些用法不兼容)


批量執行SQL語句,oracle中不支持使用GO;,使用begin-end塊來解決。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章