0
Meine erste Funktion verbraucht einen Array von UUID und gibt einen Satz von Zeilen aus der Tabelle:Warum gibt Postgres kein Ergebnis zurück?
CREATE OR REPLACE FUNCTION fun1 (
"UUID_" uuid []
)
RETURNS SETOF service AS
$body$
with recursive tree as (
SELECT * FROM service
WHERE id = ANY($1)
UNION ALL
SELECT service.* FROM service
JOIN tree ON service.id = tree.parent_id)
select distinct * from tree;
$body$
LANGUAGE 'sql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ROWS 1000;
Vorerst ich ein anderes konsumieren Liste des UUID als varchar und gibt die gleichen Daten wie die ersten schreiben will Funktion.
Mein schlechter Versuch:
CREATE OR REPLACE FUNCTION fun2 (
"UUID_" varchar
)
RETURNS TABLE (
"ID" uuid,
"NAME" varchar,
"PARENT_ID" uuid
) AS
$body$
BEGIN
RETURN QUERY
with recursive tree as (
SELECT * FROM service
WHERE id = ANY(string_to_array($1, ',')::UUID[])
UNION ALL
SELECT service.* FROM service
JOIN tree ON service.id = tree.parent_id)
select distinct(ID), name, parent_id from tree;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ROWS 1000;
Bitte geben Sie Beispieldaten und zeigen, was Sie erwarten und was Sie bekommen. –
Fun1-Prozedur funktioniert gut und liefert ein korrektes Ergebnis. fun2 erzeugt ein leeres Ergebnis ohne Felder. –