ORA-06550/PLS-00103错误:SQL Developer执行脚本遇DROP符号问题求解
问题解决方法
错误原因是PL/SQL块与后续SQL语句的边界未明确,SQL Developer将END;后的DROP命令误认为是PL/SQL块的一部分,而DROP不属于合法的PL/SQL语句,导致编译报错。
修正方案1:添加PL/SQL块终止符/
在END;之后添加斜杠/,明确告知SQL Developer PL/SQL块已结束,后续为独立SQL命令:
BEGIN NULL; END; / DROP TABLE TEST_1; CREATE TABLE TEST_1 AS select 1 h from dual;
修正方案2:若需在PL/SQL内执行DDL(可选)
如果业务逻辑需要在PL/SQL块中执行DROP/CREATE这类DDL语句,必须使用动态SQL(EXECUTE IMMEDIATE),因为PL/SQL块中不允许直接执行DDL:
BEGIN NULL; -- 动态执行DROP表 EXECUTE IMMEDIATE 'DROP TABLE TEST_1'; -- 动态执行CREATE表 EXECUTE IMMEDIATE 'CREATE TABLE TEST_1 AS SELECT 1 h FROM DUAL'; END; /
关键说明
- 斜杠
/是Oracle中用于终止PL/SQL块的特殊符号,独立于语句末尾的分号;; - 独立的SQL语句(如
DROP/CREATE)用分号即可终止,但PL/SQL块必须用/来明确结束。
内容的提问来源于stack exchange,提问作者Javi Torre
相关产品推荐
相关产品推荐

