不能。SQLTools 官方不原生支持 Oracle,driver 列表无 oracle 或 oci 选项,强行配置无效;替代方案是用 SublimeLinter + sqlint 做语法校验,自定义 OracleSQL 语法和 snippets 实现高亮与片段,并通过 Build System 调用 sqlplus 执行。

SQLTools 能不能直接支持 Oracle?
不能。SQLTools 官方不原生支持 Oracle,driver 列表里没有 oracle 或 oci 选项。你填了 host/port/username/password 后点击连接,大概率卡在“Connecting…”或直接报错 Unsupported driver: oracle。这不是配置错误,是插件能力边界问题——它底层依赖的是 mysql、postgres、sqlite 这类有 Python 原生驱动(如 PyMySQL、psycopg2)的数据库,而 Oracle 需要 cx_Oracle 或 oracledb,且二者对环境要求更苛刻(比如需要 Oracle Client 库或 Instant Client)。强行改配置文件硬加 "driver": "oracle" 不会生效,命令注册都找不到对应 handler。
替代方案:用 SublimeLinter + sqlint 搭配 Oracle SQL 语法检查
虽然没法自动补全表名字段,但基础语法校验可以落地。关键是绕过 SQLTools 的 driver 限制,走独立 linter 流程:
- 先装
SublimeLinter和SublimeLinter-contrib-sqlint(后者是适配器) - 终端执行
pip install sqlint(不是gem install,旧教程已过时;sqlint 现为 Python 包) - 确认
sqlint可执行路径:which sqlint,通常输出类似/usr/local/bin/sqlint - 打开 Sublime 的
SublimeLinter Settings – User,写入:{ "paths": { "osx": ["/usr/local/bin"], "linux": ["/usr/local/bin"], "windows": ["C:\Python39\Scripts"] } } - 确保当前文件语法模式是
SQL(右下角点开选顶层SQL,不是PL/SQL;sqlint 只认标准 SQL 语法)
这样保存后,语法错误(比如漏逗号、关键字拼错)会在行尾标红,悬停看提示。注意:它不理解 SELECT * FROM dual 这种 Oracle 特有写法,会误报,需手动忽略。
Oracle 特有语法高亮和片段,靠自定义 syntax 和 snippets 补足
Sublime 默认的 SQL 语法不识别 ROWNUM、NVL、CONNECT BY 等 Oracle 关键字,高亮弱、折叠错。解决方法不是换插件,而是叠加规则:
- 新建
Packages/User/OracleSQL.sublime-syntax,内容继承默认 SQL 并追加 keywords:%YAML 1.2 --- name: OracleSQL file_extensions: - sql scope: source.sql.oracle contexts: main: - include: scope:source.sql - match: '(ROWNUM|NVL|DECODE|CONNECTs+BY|STARTs+WITH)' scope: keyword.other.oracle.sql - 建 snippets:比如
sel展开为SELECT * FROM dual WHERE ROWNUM = 1;,存为Packages/User/oracle-select.sublime-snippet - 手动切换当前文件语言为
OracleSQL(右下角菜单里会出现)
这样做的好处是轻量、可控,不依赖外部服务;坏处是没表结构感知,所有补全是静态的。
真正想执行 Oracle SQL,必须走 Build System + sqlplus
Sublime 本身不能执行,但能调起本地 sqlplus。前提是你的机器已装 Oracle Client 并配置好 TNS_ADMIN 和 ORACLE_HOME:
- 菜单
Tools → Build System → New Build System… - 填入:
{ "cmd": ["sqlplus", "-S", "$file_base_name/$file_base_name@${ENV:TNS_ALIAS}", "@$file"], "selector": "source.sql.oracle", "working_dir": "$file_path", "variants": [ { "name": "Run Selection", "cmd": ["sqlplus", "-S", "$file_base_name/$file_base_name@${ENV:TNS_ALIAS}", "$file_name"] } ] } - 保存为
OracleSQL.sublime-build,然后用Ctrl+B执行整个文件,Ctrl+Shift+B执行选中段
这里最容易卡住的是 TNS_ALIAS 环境变量没设对,或者 sqlplus 不在 $PATH 里。建议先在终端里手动跑通 sqlplus user/pass@alias 再配 Sublime。
Oracle 的复杂性不在编辑器插件,而在客户端环境本身。与其强求一个插件包打天下,不如把 Sublime 当作语法层+触发器,把真实执行交给专业工具。这点比补全提示重要得多。


















