VS Code Oracle开发工具执行含"/"的SQL脚本报错求助
Oracle包编译问题:SQL Developer与VS Code Oracle扩展的行为差异
问题描述
myScript.sql文件包含包规范(package spec)和包体(package body)的定义,每个定义后都带有/,内容如下:
CREATE OR REPLACE PACKAGE myPackage AS ... END myPackage; / CREATE OR REPLACE PACKAGE BODY myPackage AS ... END myPackage; /
在Oracle SQL Developer中的运行结果
打开myScript.sql并选择Run Script (F5),脚本输出显示包编译成功:
Package myPackage compiled Package Body myPackage compiled
在VS Code Oracle开发工具扩展中的运行结果
打开myScript.sql并选择Execute All (Ctrl+R),脚本编译失败,输出如下:
ORA-24344: success with compilation error PACKAGE created. Commit complete.
同时问题面板中出现错误:PLS-00103: Encountered the symbol "/"
后续检查发现,编译失败后从数据库中打开包规范,整个包体被包含其中——这一问题在SQL Developer中运行同一文件时不会出现。推测原因是PL/SQL要求包规范和包体必须在独立的查询中定义,而/是用于分隔执行单元的符号,但VS Code的扩展对其解析逻辑与SQL Developer不一致。
补充说明
根据Oracle官方文档,/是执行SQL缓冲区内容的命令。目前不清楚为何VS Code Oracle扩展对/的解析与SQL Developer存在差异,但该问题已经严重影响团队的代码运行流程。
临时解决方案
经测试,在脚本文件顶部添加以下语句后,脚本可成功编译:
SET BLOCKTERMINATOR /
目前仍需验证该修改的安全性,以及如何在VS Code启动时默认配置该参数,但已解决当前的编译问题。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

