2
请看下面的例子功能:在PostgreSQL的SQL函数的多个结果掷错误
CREATE FUNCTION test()
RETURNS INTEGER
LANGUAGE SQL
AS $$ SELECT * FROM UNNEST(ARRAY[1,2,3,4,5]); $$
;
当我们执行它像这样:
SELECT test();
结果我们得到的回复是1
。换句话说,函数刚刚返回结果集的第一个元素。
我有一个方便的功能,它根据行的其余部分的数据检索一个ID。它允许呼叫者查询通常对特定行唯一的数据,但不是严格唯一。首先,它将被用来填充一些大部分是静态的数据。允许调用使用行数据而不是硬编码,这使得ID在新数据出现时更具可读性和更易于维护。这取决于调用者对数据有一定的熟悉程度,但这是一个合理的假设,可以用于手头的使用。
问题是,如果用户犯了一个错误,并给出的参数不足以将查询的结果过滤到一行,我希望我的函数出错而不是返回第一个结果。我怎样才能做到这一点?除了将我的语言切换到PL/PGSQL并手动检查之外,我还有其他选择吗?
(使用PostgreSQL 9.3)。