PostgreSQL 9.3:函数不是唯一错误

时间:2015-12-23 08:14:50

标签: postgresql postgresql-9.3

我用11个参数创建了以下函数,如下所示:

调用函数

SELECT * FROM function_TableDetails
(
    NULL::Type_Table,
    '2671ffdb-28a4-4ce4-a226-e5a21d66509e',
    'D09636DC-0185-4FFC-AEDD-63895B445CD8',
    'Xyz',
    'Cola',
    '20028243-52c2-4d23-a6fe-c3694aab84a2',
    '01-01-2000',
    '01-01-2016',
    '00:00:01',
    '23:59:59',
    'Al'
);

发出以下错误:

ERROR:  function function_TableDetails(Type_Table, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown) is not unique
LINE 1: SELECT * FROM function_TableDetails
              ^
HINT:  Could not choose a best candidate function. You might need to add explicit type casts.

我有两个问题:

首先:如何解决上述错误? (因为它甚至不在功能范围内,也没有显示错误的确切位置)

第二:如何调试该功能? (特别需要处理此类错误)

1 个答案:

答案 0 :(得分:6)

你有两个或多个名为function_TableDetails的函数,并且期望有11个参数,尽管某些参数的类型不同。你的字符串参数是无类型的,所以Postgres无法找出你想要的函数。

此查询将显示每个功能的签名:

SELECT oid::regprocedure
FROM pg_proc
WHERE proname = 'function_tabledetails'

如果您无意中创建了这些内容,请删除您不想要的内容。否则,抛出您的参数以匹配您尝试调用的类型所期望的类型。