2017-06-28 2 views
0

Sagen wir, ich habe folgende Postgres Funktion:Wie kann ich bestimmte Spalten aus der Postgres-Funktion auswählen?

CREATE OR REPLACE FUNCTION get_summary(
    IN param INT) 
    RETURNS TABLE (
    value NUMERIC, 
    amount NUMERIC) AS $$ 
BEGIN 

    RETURN QUERY 
    SELECT sum(value) AS value, sum(amount) AS amount FROM ... 

END; 
$$ LANGUAGE plpgsql; 

ich aus dieser Funktion wie die Auswahl:

SELECT * FROM get_summary(10); 

Aber was, wenn ich so wählen wollen:

SELECT value, amount FROM get_summary(10); 

Aber dann erhalte ich folgenden Fehler:

[2017-06-28 12:49:53] [42702] ERROR: column reference "value" is ambiguous 
[2017-06-28 12:49:53] Detail: It could refer to either a PL/pgSQL variable or a table column. 

Wie kann ich bestimmte Spalten aus der Postgres-Funktion auswählen?

Antwort

3

try Verwendung Alias ​​Tabelle zum Beispiel:

CREATE OR REPLACE FUNCTION get_summary(
    IN param INT) 
    RETURNS TABLE (
    value NUMERIC, 
    amount NUMERIC) AS $$ 
BEGIN 

    RETURN QUERY 
    SELECT sum(t.value), sum(t.amount) AS amount FROM your_table t 

END; 
$$ LANGUAGE plpgsql; 

oder versuchen Sie dies:

SELECT t.value, t.amount FROM get_summary(10) t; 
Verwandte Themen