报错截图:

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