Vous pouvez utiliser la syntaxe alternative avec un littéral de tableau au lieu du constructeur de tableau, qui est une construction de type fonction Postgres et peut causer des problèmes lorsque vous devez transmettre des valeurs - comme dans une déclaration préparée :
SELECT myschema.myfunc('0d6311cc-0d74-4a32-8cf9-87835651e1ee'
, '{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee, 25)"
, "(6449fb3b-844e-440e-8973-31eb6bbefc81, 10)"}'::mytype[]);
J'ai ajouté un saut de ligne entre les deux types de ligne dans le tableau pour l'affichage. C'est légal.
Comment trouver la syntaxe correcte pour any littéral ?
Demandez à Postgres. Voici une démo :
CREATE TABLE mytype (id uuid, amount numeric(13,4));
INSERT INTO mytype VALUES
('0d6311cc-0d74-4a32-8cf9-87835651e1ee', 25)
,('6449fb3b-844e-440e-8973-31eb6bbefc81', 10);
SELECT ARRAY(SELECT m FROM mytype m);
Renvoie :
{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee,25.0000)","(6449fb3b-844e-440e-8973-31eb6bbefc81,10.0000)"}
db<>jouez ici
Toute table (y compris les tables temporaires) crée implicitement un type de ligne du même nom.