1

Temat: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

create function term()
returns trigger as '
BEGIN
IF    ((count(data) from rezerwacja_samochodu where data=new.data and godz=new.godz and         nr_rejestr=new.nr_rejestr group by data)>1);
THEN
    raise notice ''ten termin jest juz zarezerwowany'';
    delete from rezerwacja_samochodu where nr_rez=new.nr_rez;
    return null;
ELSE    return null;
END IF;
END;
' 
LANGUAGE 'plpgsql';
CREATE TRIGGER przyklad AFTER INSERT ON rezerwacja_samochodu FOR EACH ROW EXECUTE PROCEDURE term();

Wywala mi taki błąd:

psql:trigger.sql:13: BŁĄD:  missing "THEN" at end of SQL expression
CONTEXT:  compile of PL/pgSQL function "term" near line 2
psql:trigger.sql:14: BŁĄD:  funkcja term() nie istnieje

Skąd się to pierze ?

2

Odp: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

Usuń ";" który jest na końcu linijki z IF'em

3

Odp: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

psql:trigger.sql:16: BŁĄD:  błąd składni w lub blisko "from"
LINE 1: SELECT ((count(data) from rezerwacja_samochodu where data= $...
                             ^
QUERY:  SELECT ((count(data) from rezerwacja_samochodu where data= $1  and godz= $2  and nr_rejestr= $3  group by data)>1)
CONTEXT:  SQL statement in PL/PgSQL function "term" near line 5
psql:trigger.sql:18: BŁĄD:  funkcja term() nie istnieje

4

Odp: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

select count(data) into zmienna from ....

5

Odp: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

DECLARE
zmienna int:=(count(data) FROM rezerwacja_samochodu WHERE data=new.data and godz=new.godz AND nr_rejestr=new.nr_rejestr group by data);
BEGIN
if (zmienna>1)

wywala

psql:trigger.sql:14: BŁĄD:  błąd składni w lub blisko "FROM"
LINE 1: SELECT (count(data) FROM rezerwacja_samochodu WHERE data= $1...
                            ^
QUERY:  SELECT (count(data) FROM rezerwacja_samochodu WHERE data= $1  and godz= $2  AND nr_rejestr= $3  group by data)
CONTEXT:  SQL statement in PL/PgSQL function "term" near line 2
psql:trigger.sql:16: BŁĄD:  funkcja term() nie istnieje

Ostatnio edytowany przez peiner (2010-01-18 23:55:41)

6

Odp: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

select count(data) into zmienna from ....

7

Odp: sql:trigger.sql:13: BŁĄD: missing "THEN" at end of SQL expression

create function term() 
returns trigger as '
DECLARE
zmienna integer;
BEGIN
select count(data) into zmienna from rezerwacja_samochodu WHERE data=new.data and godz=new.godz AND nr_rejestr=new.nr_rejestr group by data;
if (zmienna>1)
then
raise notice ''ten termin jest juz zarezerwowany'';
delete from rezerwacja_samochodu where nr_rez=new.nr_rez;
return null;
end if;
return null;
END;'
LANGUAGE 'plpgsql';

CREATE TRIGGER przyklad AFTER INSERT ON rezerwacja_samochodu FOR EACH ROW EXECUTE PROCEDURE term();