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

PostgreSQL预准备语句执行无返回数据,使用是否正确?

PostgreSQL预准备语句执行无结果的问题解决

你的预准备语句语法本身是正确的,问题出在DBeaver的交互操作上:

  • 你创建的PREPARE fetch_users AS SELECT * FROM "user" u WHERE u.email = $1 LIMIT 1;符合PostgreSQL预准备语句的规范,能在pg_prepared_statements中查到说明创建成功。
  • 执行EXECUTE fetch_users('testemail@test.com');时,DBeaver会弹出参数输入提示框,此时你直接点击OK的话,DBeaver会忽略你写在语句里的参数值,自动给$1传入NULL。而SQL中NULL和任何值的比较结果都是未知,不会匹配到任何数据,所以查不到结果。

正确的执行方式:

  • 当DBeaver弹出参数输入框时,在对应参数位置填入testemail@test.com,再点击OK执行,就能得到预期结果。
  • 也可以直接用EXECUTE fetch_users($1);的形式执行,然后在参数框输入目标邮箱,避免语句里写参数值被工具忽略的问题。

另外,你单独运行SELECT语句能得到结果,也说明查询逻辑本身没问题,只是执行预准备语句时的参数传递环节出错了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:28:15