【发布时间】:2015-10-13 20:39:29
【问题描述】:
我有一个函数可以选择一些有趣行的 ID:
CREATE OR REPLACE FUNCTION ChannelSelection(...)
RETURNS TABLE(
ChannelId INTEGER
) AS [...]
它需要一些参数用于过滤目的并返回SETOF INTEGER。
我想用这个函数ChannelSelection 的结果来喂另一个,它接受INTEGER[] 作为输入:
CREATE OR REPLACE FUNCTION DataP2AMean(
_channelid INTEGER[] = NULL
)
RETURNS TABLE(
ChannelId INTEGER,
...
) AS
$BODY$
SELECT
D2.ChannelId,
...
FROM
...
WHERE
D2.ChannelId = ANY(_channelid)
OR _channelid IS NULL
$BODY$ LANGUAGE SQL;
当我发出以下查询时:
SELECT *
FROM DataP2AMean(_channelid := ChannelSelection(_site := '{41WOL1,41N043}'))
我收到此错误:
ERROR: Function datap2amean(integer) doesn't exist
State SQL :42883 (undefined_function)
我不明白,因为我可以单独使用这些功能。看起来它正在搜索另一个签名,因此 ChannelSelection 只返回一个整数,但事实并非如此。
我错过了什么?
【问题讨论】:
-
我现在知道这是一个签名问题,但我不知道如何使 INTEGER[] 和 SETOF INTEGER 匹配。有什么想法吗?
标签: postgresql function signature