jak to porpawic, jak to poprawic |
jak to porpawic, jak to poprawic |
29.05.2013, 19:35:39
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 29.05.2013 Ostrzeżenie: (0%) |
stwozylem funkcje ktora dziala i wykonuje to
CREATE OR REPLACE FUNCTION sortowanie(id int,liczba int) RETURNS int AS $$ DECLARE zero int; BEGIN zero:=0; if MOD($2,2)=zero then insert into ldod(id,liczby) values($1,$2); else insert into lnie(id,liczby) values($1,$2); END IF; return null; END; $$ language plpgsql; CREATE OR REPLACE FUNCTION sortowanieliczb() RETURNS trigger AS $$ DECLARE BEGIN if TG_OP='insert' then if liczby % 2 = 0 then insert into liczby_parzyste(liczba_parzysta) values(new.liczby); else insert into liczby_nieparzyste(id,liczba_nieparzysta) values(new.id,new.liczby); return new; END IF; END IF; END; $$LANGUAGE PLPGSQL; Ten post edytował delik 30.05.2013, 17:04:20 |
|
|
29.05.2013, 21:50:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Powinno być OK.
A swoją drogą to w tym pierwszym kodzie jest więcej błędów, niż w drugim. |
|
|
30.05.2013, 11:59:26
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 29.05.2013 Ostrzeżenie: (0%) |
no to mi pomogles piszac powinno bcy ok jakby bylo kolego to bym nie zakldal tematu pozdrawiam
tworze tak to.... CREATE OR REPLACE FUNCTION sortowanielicz() RETURNS trigger AS $$ DECLARE BEGIN if TG_OP='insert' and liczby % 2 = 0 then insert into liczby_parzyste(id,liczba_parzysta) values(new.id,new.liczba_parzysta); return new; else insert into liczby_nieparzyste(id,liczba_nieparzysta) values(new.id,new.liczba_nieparzysta); return new; END IF; END; $$LANGUAGE PLPGSQL; pozniej CREATE TRIGGER sortowanielicz BEFORE INSERT ON liczby FOR EACH ROW EXECUTE PROCEDURE sortowanieliczb(); a gdy wpisuje insert into liczby(id,liczby) values(4,4); jest bald i koentarz do neigo ERROR: control reached end of trigger procedure without RETURN KONTEKST: PL/pgSQL function sortowanieliczb() ma ktos jakis pomysl? |
|
|
30.05.2013, 13:05:36
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Trzeba było powiedzieć, że masz błąd...
Wywal RETURN new; na sam koniec (poza IF) - zawsze musisz zwracać albo new (gdy rekord ma być dodany), albo Null, gdy nie Zaraz, zaraz. Teraz jest błąd, bo i kod masz zupełnie inny. Tym NEW i NULL zasugerowałem się z poprzednigo info. Teraz ci się wcześniej wywala. Robisz:
A skąd w NEW ma być .liczba_parzysta, bądź .liczba_nieparzysta?? Tam jest po prostu .liczba |
|
|
30.05.2013, 14:06:39
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 29.05.2013 Ostrzeżenie: (0%) |
CREATE OR REPLACE FUNCTION sortowanieli() RETURNS
trigger AS $$ DECLARE BEGIN if TG_OP='insert' and Mod(liczby,2)=0 then insert into liczby_parzyste(id,liczba_parzysta) values(new.id,new.liczba); else insert into liczby_nieparzyste(id,liczba_nieparzysta) values(new.id,new.liczba); END IF; return new; END; $$LANGUAGE PLPGSQL; CREATE TRIGGER sortowanieli BEFORE INSERT ON liczby FOR EACH ROW EXECUTE PROCEDURE sortowanieli(); insert into liczby(id,liczby) values(1,3); i oto efekt: SELECT TG_OP='insert' and Mod(liczby,2)=0 KONTEKST: PL/pgSQL function sortowanieli() line 5 at IF tabele jakei mam stworzone: liczby(id,liczby) liczby_parzyste(id,liczba_parzysta) liczby_nieparzyste(id,liczba_nieparzysta) liczę na wasza pomoc bo ja jzu nie mam sil siedze nad tym do rana i efektu jakiegos do przodu brak..... pozdr Ten post edytował delik 30.05.2013, 14:09:04 |
|
|
30.05.2013, 15:47:47
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
NA-WIA-SY !
|
|
|
30.05.2013, 16:03:40
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 29.05.2013 Ostrzeżenie: (0%) |
jestes moim bogiem !!!!!!! dzieki wielkie
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.09.2024 - 04:51 |