You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中DECLARE块变量声明c int报错的原因是什么?

问题分析与解决

你的变量声明语句c int;本身语法是合法的,报错根源是这段PL/pgSQL代码没有被正确包裹在DO语句中执行,导致PostgreSQL将其当作普通SQL解析——而普通SQL不支持DECLARE变量声明语法,因此触发了语法错误。

另外你的代码还有一处不符合规范的地方:raise notice c;的写法错误,PL/pgSQL中raise notice需要用占位符来输出变量值,正确格式为raise notice '%', c;。

修正后的完整代码

DO $$
DECLARE
  c int;
BEGIN
  execute 'select count(1) from my_dwh.accounts' into c;
  raise notice '%', c;
END $$;

关键说明

  • 必须用DO $$ ... $$包裹PL/pgSQL匿名块,明确告知数据库使用PL/pgSQL语言解析这段代码
  • raise notice通过%占位符引用变量,不能直接写入变量名

内容的提问来源于stack exchange,提问作者AndroidJoker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:09:52