Я, вероятно, что-то неправильно делаю с формированием литерала. Предположим, у меня есть простой хранимой процедуры, как это:Передача массива сложного типа в хранимую процедуру
CREATE OR REPLACE FUNCTION do_something(input_array composite_type[])
RETURNS SETOF text AS
$BODY$
DECLARE
temp_var composite_type;
BEGIN
FOR temp_var IN SELECT unnest(input_array) LOOP
return next temp_var.message;
END LOOP;
END
$BODY$
LANGUAGE plpgsql;
composite_type
определяется как:
CREATE TYPE composite_type AS
(message text,
amount numeric(16,2));
Выполнение запроса, как это:
SELECT * FROM do_something('{"(test,11)","(test2,22)"}')
Производит этот результирующий набор:
(test,11.00)
(test2,22.00)
Вместо:
test
test2
Это что-то не так с моим буквальным, или я должен получить доступ к message
поле по-другому? Спасибо за любые предложения.
Отличный вопрос! –