Ich möchte programmgesteuert eine SQL in Postgres ausführen, ohne eine Funktion zu erstellen.Wie Sie plpgsql ausführen, ohne eine Funktion zu erstellen?
Grund: um sicherzustellen, dass meine plpgsql funktioniert im Voraus UND "zu analysieren" die Abfrage vor der Übergabe an eine Funktion.
Ich bin neu in Postgres und ich dachte, das wäre einfach. Ich konnte kein Beispiel finden. Vielleicht ist es nicht möglich? Wie kann der folgende Code funktionieren?
DO
$body$
DECLARE
v_name_short VARCHAR;
BEGIN
v_name_short := 'test Account 1';
RETURN QUERY
SELECT
a.name_short,
a.name_long
FROM enterprise.account a
WHERE
CASE WHEN v_name_short IS NOT NULL THEN
LOWER(a.name_short) = LOWER(v_name_short)
ELSE
1 = 1
END;
END;
$body$
LANGUAGE 'plpgsql';
Auch hier ist das Ziel hier meine SQL testet, wie in diesem Fall habe ich sicher noch meine CASE Aussage machen will, um einen Index mit I erstellt (LOWER (name_short)). Wie auch immer, ich bekomme diese Fehlermeldung:
ERROR: cannot use RETURN QUERY in a non-SETOF function
Ist das, was ich bin gefragt möglich in Postgres? Wenn nicht, gibt es eine Möglichkeit, Pläne in einer Funktion zu analysieren?
Warum verwenden Sie einen 'do' Block ein' explain' zu laufen? Warum kannst du nicht einfach 'explain select ... 'ausführen? –