PostgreSQL 9.1.18执行DO匿名块报语法错误,求解决思路
问题原因与解决方法
这个报错的核心问题在于PostgreSQL 9.1版本的DO匿名块必须显式指定编程语言,你当前的语句缺少了必要的语言声明部分。
详细说明
PostgreSQL从9.0版本开始引入了DO语句来执行匿名代码块,但9.1版本并没有为DO块设置默认的过程语言(procedural language)。而在9.2及以后的版本中,PostgreSQL默认将plpgsql作为DO块的语言,所以你可能看到过省略语言声明的示例,但这些示例在9.1里是不兼容的。
修正后的代码
把你的语句补充上LANGUAGE plpgsql声明即可正常运行:
DO $$ BEGIN RAISE NOTICE 'Hello, World!'; END $$ LANGUAGE plpgsql;
额外验证
你在Aqua Data Studio和pgAdmin中都遇到同样的错误,这说明不是工具的问题,完全是版本对应的语法要求导致的。另外,PostgreSQL 9.1默认已经预装了plpgsql扩展,除非你手动卸载过,否则不需要额外安装就能使用。
内容的提问来源于stack exchange,提问作者lookslikeanevo
相关产品推荐
相关产品推荐

