char(10) to znak nowej linii, ale to nie istotne. Czyli rozumiem że do zmiennej typu tekstowego nie mogę dodawać zmiennej typu DATA?
Mam problem z jeszcze jedną funkcją. Błąd jest w 11 linii, ale nie rozumiem dlaczego. Ten SELECT zawsze zwraca mi jednoatrrybutową i jednowierszową tabelę, więc dlaczego ma problem z przypisaniem?
CREATE OR REPLACE FUNCTION czas_calkowity_reklam (IDseanu_arg INTEGER) RETURNS INTEGER AS $$
DECLARE
czas_trwania_reklam INTEGER;
r RECORD;
ID_reklamy INTEGER;
czas_reklamy INTEGER;
BEGIN
czas_trwania_reklam:=0;
FOR r IN SELECT * FROM reklamy_seanse WHERE IDseansu=IDseansu_arg LOOP
ID_reklamy=r.IDreklamy;
czas_reklamy=SELECT czas_trwania FROM reklamy WHERE IDreklamy=ID_reklamy;
czas_trwania_reklam=czas_trwania_reklam+czas_reklamy;
END LOOP
RETURN czas_trwania_reklam;
END;
$$ LANGUAGE 'plpgsql';
Nie znam się plpgsql, ale czy w nim nie można zapisać tego łatwiej:
SELECT SUM(czas_trwania)
FROM reklamy r JOIN reklamy_seanse rs ON r.IDreklamy = rs.IDreklamy
WHERE rs.IDseansu = IDseansu_arg
?