gibt Wenn ich die folgenden Anweisungen in PostgreSQL 9.4.8 laufen, bekomme ich diese Fehlermeldung:CREATE VIEW mehr Spaltennamen als Spalten
CREATE VIEW specifies more column names than columns.
Aber warum? Gibt f1
keine Tabelle mit 5 Spalten zurück und sollte v1
nicht auch 5 Spalten haben? Auch, wenn ich die Würfe aus der ersten SELECT
Anweisung entfernen, ich diese Fehlermeldung:
Final statement returns unknown instead of character varying at column 1.
Aber warum? Der richtige Typ VARCHAR(20)
ist von RETURNS
bekannt. Warum gibt es also keine implizite Umwandlung von Strings wie '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); 'Ihre Variante gibt die einzelne Spalte des' record'-Typs zurück (einfach ausprobieren, ohne eine View zu erstellen). – Abelisto
@Abelisto Ausgezeichnet, wenn Sie diesen Kommentar in eine Antwort verwandeln wollen, werde ich es akzeptieren. Thx auf jeden Fall. – Drux