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



你可能感兴趣的:(oracle,动态sql,pls-00103)