最终语句返回未知而不是字符变化

时间:2016-08-05 18:10:05

标签: sql postgresql postgresql-9.4

以下是earlier question的未解答的第二部分,作为一个单独的问题:

CREATE OR REPLACE FUNCTION f1 (a1 INTEGER, a2 INTEGER)
RETURNS TABLE (c1 VARCHAR(20), c2 VARCHAR(20), c3 INTEGER, c4 VARCHAR(20), c5 VARCHAR(128))
AS $$
SELECT 'a'::VARCHAR(20), 'b'::VARCHAR(20), 1::INTEGER, 'c'::VARCHAR(20), 'd'::VARCHAR(128);
$$ LANGUAGE SQL;

此示例代码旨在创建一个函数f1,该函数返回一个包含5行单行的表。

如果我从SELECT语句中删除了强制转换,我会收到以下错误消息:

  

最终语句返回未知而不是第1列的字符变化。

但演员阵容真的有必要吗?似乎VARCHAR(20)已知正确的类型RETURNS,为什么没有'a'之类的字符串的隐式转换?有没有更好的方法以简明的方式制定这些东西?

0 个答案:

没有答案