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

如何在PostgreSQL中正确执行stored procedure存储过程

问题原因及解决方法

  • PostgreSQL 没有 exec 语法,这是 SQL Server 专属的存储过程调用语法,PostgreSQL 11 及以上版本调用存储过程需要使用 CALL 命令。
  • 你收到的报错含义为「同名且参数类型一致的存储过程已存在」,是因为你的删除语句逻辑有误:你删除的是无参数的 checkName() 存储过程,而你要创建的是带 varchar 类型参数的 checkName(varchar),如果之前已经创建过同名同参数的存储过程,旧实例没有被正确删除,自然会触发重复创建的报错。

正确操作步骤

  1. 先删除已存在的带参数的存储过程
DROP PROCEDURE IF EXISTS checkName(varchar);
  1. 再执行你原有的存储过程创建语句即可
  2. 调用存储过程使用如下语法
CALL checkName('ThisIsTest');

额外代码优化建议

你代码中 declare notify_msg text := 0; 写法存在隐式类型转换,数字0会被自动转成文本,建议直接写成 declare notify_msg text := ''; 更符合规范。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:27:00