報錯截圖:
原因: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塊來解決。