Ich habe die folgende pl/pgsql Funktion. (Offensichtlich ist dies nicht die volle Funktion, es ist nur die minimale Menge an Code benötigt, um das Problem zu reproduzieren)PL/pgSQL "Malformed Array Literal" Fehler innerhalb von Schleife
CREATE OR REPLACE FUNCTION test_func(infos TEXT[][])
RETURNS void AS
$$
DECLARE
info TEXT[];
type TEXT[];
name TEXT;
BEGIN
FOREACH info SLICE 1 IN ARRAY infos LOOP
RAISE NOTICE 'Stuff: %', info;
type := info[1];
name := info[2];
RAISE NOTICE 'Done with stuff';
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
Wenn ich die Funktion laufen mit SELECT test_func('{{something, things},{other, data}}'::TEXT[][]);
, ich folgende Ausgabe:
NOTICE: Stuff: {something,things}
ERROR: malformed array literal: "something"
DETAIL: Array value must start with "{" or dimension information.
CONTEXT: PL/pgSQL function test_func(text[]) line 10 at assignment
Ich verstehe nicht, wie dieser Fehler passiert. Wenn der Wert info
gedruckt wird, zeigt es {something,things}
, die mir scheint, ein richtiges Array-Literal zu sein.
Ich benutze PostgreSQL Version 9.4.7, falls es darauf ankommt.