Wie nennen Postgres-Funktion returning SETOF record?
Ich geschrieben habe die folgende Funktion:
-- Gets stats for all markets
CREATE OR REPLACE FUNCTION GetMarketStats (
)
RETURNS SETOF record
AS
$$
BEGIN
SELECT 'R approved offer' AS Metric,
SUM(CASE WHEN M.MarketName = 'A+' AND M.Term = 24 THEN LO.Amount ELSE 0 end) AS MarketAPlus24,
SUM(CASE WHEN M.MarketName = 'A+' AND M.Term = 36 THEN LO.Amount ELSE 0 end) AS MarketAPlus36,
SUM(CASE WHEN M.MarketName = 'A' AND M.Term = 24 THEN LO.Amount ELSE 0 end) AS MarketA24,
SUM(CASE WHEN M.MarketName = 'A' AND M.Term = 36 THEN LO.Amount ELSE 0 end) AS MarketA36,
SUM(CASE WHEN M.MarketName = 'B' AND M.Term = 24 THEN LO.Amount ELSE 0 end) AS MarketB24,
SUM(CASE WHEN M.MarketName = 'B' AND M.Term = 36 THEN LO.Amount ELSE 0 end) AS MarketB36
FROM "Market" M
INNER JOIN "Listing" L ON L.MarketID = M.MarketID
INNER JOIN "ListingOffer" LO ON L.ListingID = LO.ListingID;
END
$$
LANGUAGE plpgsql;
Und wenn Sie versuchen, es so nennen...
select * from GetMarketStats() AS (
Metric VARCHAR(50),
MarketAPlus24 INT,
MarketAPlus36 INT,
MarketA24 INT,
MarketA36 INT,
MarketB24 INT,
MarketB36 INT);
Bekomme ich eine Fehlermeldung:
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function "getmarketstats" line 2 at SQL statement
Verstehe ich nicht diese Ausgabe. Ich habe versucht über ausführen auch, aber ich dachte, man musste nur verwenden, wenn die Funktion nichts zurückgibt.
InformationsquelleAutor Peter | 2010-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Funktion nicht maken Gefühl, es nichts zurückgibt. Es sieht aus wie eine VIEW, also, warum nicht Sie eine Ansicht erstellen?
Bearbeiten:
Verwenden Sie die OUT-Parameter oder RETURN TABLE() mit den Parametern:
Angenommen, ich wollte ein parameter übergeben werden, wie gehe ich über die Rückkehr das Ergebnis meiner SQL-Abfrage?
Siehe Beispiel, GIBT TABELLE(int, text) wäre eine weitere option.
Die Stelle, die Adressen, die eigentliche Frage ist die Verwendung von "RETURN QUERY", um die folgenden WÄHLEN Sie Ergebnismenge das Ergebnis der Funktion. Die OUT-Parameter/ZURÜCK TABELLE nur machen Anrufung viel einfacher.
InformationsquelleAutor Frank Heikens