zurückgeben Ich versuche, mehrere Werte in plpgsql mit einer sehr vereinfachten Testfunktion zurückzugeben. Die Testfunktion nimmt eine Ganzzahl als Eingabe und soll zurückkehren, wenn sie positiv, negativ und Null ist. Ich habe ein Beispiel gesehen, aber sie sind alle kompliziert und gehen mir über den Kopf. HierEinen Datensatz von der Funktion
ist, was ich versucht:
create or replace function test(v integer)
returns record as $$
BEGIN
IF v > 0
THEN return true as positive, false as negative, false as zero;
ELSEIF v < 0
THEN return false as positive, true as negative, false as zero;
ELSE
return false as positive, false as negative, true as zero;
END IF;
END;
$$ LANGUAGE plpgsql;
auch versucht, diese
create or replace function test(v integer)
returns record as $$
DECLARE
result record;
BEGIN
IF v > 0
THEN
result.positive = true;
result.negative = false;
result.zero = false;
ELSEIF v < 0
THEN
result.positive = false;
result.negative = true;
result.zero = false;
ELSE
result.positive = false;
result.negative = false;
result.zero = true;
return result;
END IF;
END;
$$ LANGUAGE plpgsql;
auch dieses:
IF v > 0
THEN
SELECT true, false, false into
result.positive, result.negative, result.zero;
ELSEIF v < 0
THEN
SELECT false, true, false into
result.positive, result.negative, result.zero;
ELSE
SELECT false, false, true into
result.positive, result.negative, result.zero;
return result;
END IF;
Die Antwort hier: http://StackOverflow.com/A/6085167/4299560 sagt RECORD Typ zu verwenden. Deshalb hat meine Frage spezifisch danach gefragt. Es scheint viel praktischer zu sein, als Typen jedes Mal zu erstellen, wenn ich ein benutzerdefiniertes Ergebnis benötige. – Ced
Wahr. Ich habe die Antwort erweitert, um speziell die "Aufzeichnung" abzudecken, damit Sie Ihre Funktionen ausführen können. –