VSCode中SQLTools执行PL/pgSQL函数仅全选可成功的问题求助
解决VSCode SQLTools执行PL/pgSQL函数时的选中不全与着色问题
问题根源
SQLTools 0.26.0的查询解析逻辑未正确识别PostgreSQL的$$字符串分界符,导致把PL/pgSQL函数内容误判为未闭合的字符串,进而出现语法着色不全、快捷键执行时选中范围截断的问题。
可行解决办法
1. 修改SQLTools的查询分隔符
打开VSCode设置(快捷键Ctrl+,),搜索SQLTools: Query Separator,将默认的;替换为函数内不会出现的自定义分隔符,比如--;;。
之后在函数定义末尾添加这个分隔符,让SQLTools能正确识别完整的函数作为单个查询:
CREATE OR REPLACE FUNCTION sample_func() RETURNS int AS $$ BEGIN RETURN 1; END $$ LANGUAGE plpgsql; --;;
2. 用选中查询替代当前查询执行
无需修改设置的临时方案:选中整个函数内容后,使用SQLTools Connection: Run selected query快捷键(默认Ctrl+Shift+E)执行,替代原来的“运行当前查询”功能。
3. 升级SQLTools扩展
SQLTools后续版本已修复部分PL/pgSQL语法解析bug,直接在VSCode扩展市场将SQLTools更新至0.26.0之后的版本,多数情况下能自动解决该问题。
4. 替换为官方PostgreSQL扩展
如果SQLTools的问题持续,可切换使用微软官方的PostgreSQL扩展,它对PL/pgSQL的语法识别和执行支持更完善,能正确处理$$分界符的函数定义。
内容的提问来源于stack exchange,提问作者ufk
相关产品推荐
相关产品推荐

