报错截图:
原因: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块来解决。