如果我的PostgreSQL 9.4.8运行下面的语句,我收到此错误信息的列名:CREATE VIEW指定比列
CREATE VIEW specifies more column names than columns.
但是,为什么? f1
是否返回5列的表格,而不应该v1
也有5列?另外,如果我从第一SELECT
语句去掉石膏,我得到这个错误信息:
Final statement returns unknown instead of character varying at column 1.
但是,为什么?从RETURNS
知道正确的类型VARCHAR(20)
,那么为什么没有隐含的字符串类型,如'a'
?
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;
CREATE VIEW v1 (c1, c2, c3, c4, c5)
AS SELECT f1 (1, 2);
' ... select * from f1(1,2);'你的变体返回'record'类型的单个列(只是在不创建视图的情况下尝试它)。 – Abelisto
@Abelisto非常好,如果你想把这个评论变成答案,我会接受它。 Thx无论如何。 – Drux