PL/pgSQL “mal formé littéral de tableau” erreur à l'intérieur de la boucle
J'ai de la suite de fonctions pl/pgsql. (Évidemment, ce n'est pas la pleine fonction, c'est que la quantité minimale de code nécessaires pour reproduire le problème)
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;
Quand je lance la fonction à l'aide SELECT test_func('{{something, things},{other, data}}'::TEXT[][]);
, j'obtiens le résultat suivant:
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
Je ne comprends pas comment cette erreur se produit. Lorsque la valeur de info
est imprimé, il montre {something,things}
, ce qui me semble être un bon littéral de tableau.
Je suis en utilisant la version de PostgreSQL 9.4.7, en cas de questions.
Vous devez vous connecter pour publier un commentaire.
La variable
type
devrait êtretext
(pastext[]
):