Ich habe die folgende Funktion geschrieben:
-- Holt Statistiken für alle Märkte
CREATE OR REPLACE FUNCTION GetMarketStats (
)
RETURNS SETOF record
AS
$$
BEGIN
SELECT 'R genehmigtes Angebot' 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 ich versuche, es so aufzurufen...
select * from GetMarketStats() AS (
Metric VARCHAR(50),
MarketAPlus24 INT,
MarketAPlus36 INT,
MarketA24 INT,
MarketA36 INT,
MarketB24 INT,
MarketB36 INT);
Bekomme ich einen Fehler:
ERROR: Abfrage hat kein Ziel für Ergebnisdaten
HINWEIS: Wenn Sie die Ergebnisse eines SELECT verwerfen möchten, verwenden Sie stattdessen PERFORM.
KONTEXT: PL/pgSQL Funktion "getmarketstats" Zeile 2 in SQL-Anweisung
Ich verstehe diese Ausgabe nicht. Ich habe auch versucht, perform zu verwenden, aber ich dachte, man müsste das nur benutzen, wenn die Funktion nichts zurückgibt.