SQL Developer 23.1连接PostgreSQL执行匿名块报错:美元引号未终止
解决SQL Developer连接PostgreSQL执行匿名块的美元引号错误
问题原因
SQL Developer默认以分号(;)作为语句终止符,当执行PostgreSQL的美元引号包裹的DO匿名块时,工具会错误地将DO $$识别为单独的语句,导致后续代码被拆分,触发"美元引号字符串未终止"的错误。
解决方案
方案1:临时修改语句终止符
修改SQL Developer的语句终止符,让它将整个DO块视为一个完整语句:
SET SQLTERMINATOR // DO $$ DECLARE c_200 CONSTANT INTEGER := 200; BEGIN RAISE NOTICE 'Constante : %', c_200; END; $$// SET SQLTERMINATOR ;
执行步骤:
- 先执行
SET SQLTERMINATOR //修改终止符 - 执行整个DO块(末尾用
$$//结束) - 最后执行
SET SQLTERMINATOR ;恢复默认终止符
方案2:使用单引号替代美元引号
将美元引号替换为单引号,同时对块内部的单引号进行转义(用两个单引号''):
DO ' DECLARE c_200 CONSTANT INTEGER := 200; BEGIN RAISE NOTICE ''Constante : %'', c_200; END; ';
内容的提问来源于stack exchange,提问作者Christian Soutou
相关产品推荐
相关产品推荐

