Nisam puno vičan u korišćenju SQL jezika. Zato sam uz pomoć Googlanja došao do sledeće procedure.
Code:
BEGIN
DECLARE BrojKorisnika INT DEFAULT 0;
DECLARE IdPrijavljenogKorisnika CHAR(40) DEFAULT '';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET IdPrijavljenogKorisnika='SQLEXCEPTION';
DECLARE CONTINUE HANDLER FOR SQLWARNING SET IdPrijavljenogKorisnika='SQLWARNING';
SELECT COUNT(IdBroj) FROM tblkorisnici WHERE BINARY KIme=PKIme AND BINARY KSifra=PKSifra INTO BrojKorisnika;
IF BrojKorisnika=1 THEN
SET AUTOCOMMIT=0;
START TRANSACTION;
UPDATE tblkorisnici SET Akcija1='b' WHERE BINARY KIme=PKIme AND BINARY KSifra=PKSifra;
IF IdPrijavljenogKorisnika='' THEN
COMMIT;
SELECT IdBroj FROM tblkorisnici WHERE BINARY KIme=PKIme AND BINARY KSifra=PKSifra INTO IdPrijavljenogKorisnika;
ELSE
ROLLBACK;
END IF;
END IF;
SELECT IdPrijavljenogKorisnika;
END
BEGIN
DECLARE BrojKorisnika INT DEFAULT 0;
DECLARE IdPrijavljenogKorisnika CHAR(40) DEFAULT '';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET IdPrijavljenogKorisnika='SQLEXCEPTION';
DECLARE CONTINUE HANDLER FOR SQLWARNING SET IdPrijavljenogKorisnika='SQLWARNING';
SELECT COUNT(IdBroj) FROM tblkorisnici WHERE BINARY KIme=PKIme AND BINARY KSifra=PKSifra INTO BrojKorisnika;
IF BrojKorisnika=1 THEN
SET AUTOCOMMIT=0;
START TRANSACTION;
UPDATE tblkorisnici SET Akcija1='b' WHERE BINARY KIme=PKIme AND BINARY KSifra=PKSifra;
IF IdPrijavljenogKorisnika='' THEN
COMMIT;
SELECT IdBroj FROM tblkorisnici WHERE BINARY KIme=PKIme AND BINARY KSifra=PKSifra INTO IdPrijavljenogKorisnika;
ELSE
ROLLBACK;
END IF;
END IF;
SELECT IdPrijavljenogKorisnika;
END
Napravio sam tabelu tblkorisnici koja ima polja IdBroj,KIme,KSifra i Akcija, probe radi. Gornja procedura treba da izmeni polje Akcija ako je zadovoljen uslov i vrati IdBroj izmenjenog korisnika. Ako se desi neka greška (što sam namerno prouzrokovao sa Akcija1 umesto Akcija u UPDATE redu, vraća se vrednost 'SQLEXCEPTION'. To je i moje pitanje. Kako da umesto ovoga procedura u slučaju greške vrati kod i tekst nastale greške ?
Unapred hvala ...