oracle一起跑,oracle报错pls-00103,在使用begin-end块的时候(动态SQL)

报错截图:

9a1f69bdb61afd0b3f28de7dc1dae08c.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值