Можете да използвате алтернативния синтаксис с литерал на масив вместо конструктора на масива, който е конструкция, подобна на функцията на Postgres и може да причини проблеми, когато трябва да предадете стойности - като в подготвено изявление:
SELECT myschema.myfunc('0d6311cc-0d74-4a32-8cf9-87835651e1ee'
, '{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee, 25)"
, "(6449fb3b-844e-440e-8973-31eb6bbefc81, 10)"}'::mytype[]);
Добавих прекъсване на ред между двата типа редове в масива за показване. Това е законно.
Как да намеря правилния синтаксис за всяко буквално?
Просто попитайте Postgres. Ето демонстрация:
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);
Връща:
{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee,25.0000)","(6449fb3b-844e-440e-8973-31eb6bbefc81,10.0000)"}
db<>цигулка тук
Всяка таблица (включително временни таблици) имплицитно създава тип ред със същото име.