1

Temat: Zwrot typu danych real z funkcji

Witam, mam taki nietypowy problem z prostą funkcją:

CREATE OR REPLACE FUNCTION przelicz( ID_EKWIP int ) RETURNS real AS $$

DECLARE WAGA_TMP real; -- waga przedmiotów tymczasowa

BEGIN

SELECT sum( waga ) INTO WAGA_TMP FROM przedmiot WHERE id_ekwipunek = ID_EKWIP;

-- próbowałem też:
-- WAGA_TMP = (SELECT sum( waga )  FROM przedmiot WHERE id_ekwipunek = ID_EKWIP);

RETURN WAGA_TMP;

END

Funkcja mi zwraca zero jak ją wywołam:

SELECT * FROM przelicz( 5 ); -- dla id = 5

a dokładniej:

           przelicz
---------------------------
                         0



Wynik zapytania:

SELECT sum( waga ) FROM przedmiot WHERE id_ekwipunek = 5;


Jest następujący:

  sum
-------
15.73
(1 row)

Czy jak rozumiem nie mogę zwracać z funkcji typu real danych  (float też próbowałem)
czy robię gdzieś prosty błąd o którym nikt nie pisze w dokumentacji albo ja nie trafiłem na takowy opis a szukam już od tygodnia,...

Jeśli ktoś ma jakiś pomysł to zapraszam do dyskusji smile

Ostatnio edytowany przez szmontak (2012-07-06 19:33:01)

2

Odp: Zwrot typu danych real z funkcji

u mnie działa, tyle ze wywołanie tej funkcji powinno mieć składnie SELECT  przelicz( 5 );

a funkcja powinna wyglądać dokładnie tak (to tylko szczegół) dodatkowo proponuje zmienić tym zwracany przez funkcje na numeric
CREATE OR REPLACE FUNCTION przelicz( ID_EKWIP int ) RETURNS real AS $$
DECLARE WAGA_TMP real; -- waga przedmiotów tymczasowa
BEGIN
SELECT sum( waga ) INTO WAGA_TMP FROM przedmiot WHERE id_ekwipunek = ID_EKWIP;
RETURN WAGA_TMP;
END;
$$LANGUAGE plpgsql VOLATILE

3

Odp: Zwrot typu danych real z funkcji

Rzeczywiście działa super smile
Już widzę gdzie popełniłem błąd

Dzięki 1100100 - krotne big_smile