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

在Squirrel连接PostgresDB时执行函数/存储过程报错求助

解决PostgreSQL在Squirrel中调用函数/存储过程的语法问题

你遇到的问题核心很明确——PostgreSQL根本不支持exec这个调用语法,exec是SQL Server、MySQL这类数据库的用法,PostgreSQL有自己专属的函数/存储过程调用规则,咱们来调整一下:

1. 调用普通函数(FUNCTION)的正确姿势

先确认pglog_read是PostgreSQL的函数对象,分两种情况处理:

  • 如果函数返回单个标量值(比如字符串、数字):
    直接用SELECT语句调用即可:
SELECT pglog_read('Thu');
  • 如果函数返回的是结果集/表类型:
    需要用SELECT * FROM来获取完整的返回数据:
SELECT * FROM pglog_read('Thu');

2. 调用存储过程(PROCEDURE,PostgreSQL 11+版本专属)

如果pglog_read是PostgreSQL 11及以上版本的存储过程(注意PostgreSQL里FUNCTION和PROCEDURE是完全不同的数据库对象),那就要用CALL关键字:

CALL pglog_read('Thu');

关于Squirrel客户端的小补充

你提到的插件列表不用过度担心,只要Squirrel已经通过PostgreSQL JDBC驱动成功连接数据库,上面的语法都能正常执行,不需要额外插件来支持函数/存储过程调用。如果还是有问题,可以做两个小检查:

  • 验证函数/存储过程是否存在:执行SELECT * FROM pg_proc WHERE proname = 'pglog_read';,确认它在当前连接的数据库和schema下
  • 核对参数类型:确认你传入的'Thu'和函数定义的参数类型匹配(比如参数是否为text类型)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:48:26