如果我的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