Evo konkretno o cemu se radi:
Imam tabelu korisnika i tabelu placanja.
Ponekad, korisnik plati unapred, tako da ja njega zaduzim i razduzim. Ali, svakog prvog u mesecu, radim "grupno zadizivanje". Znaci, zaduzim sve korisnike za taj i taj mesec.
Kako da napravim da ako je vec zaduzen da preskoci INSERT naredbu.
Evo procedure:
Legenda:
_Mesec (ulazni parametar za koji mesec zaduzavam)
_userId (Id korisnika)
_iznos (koliko treba da plati)
_aktiven (dali je aktivan ili nije)
Code:
PROCEDURE `pzadolziInternet`(_Mesec INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE _userId, _iznos, _aktiven BigInt(20);
DECLARE lista CURSOR FOR SELECT id, internet, aktiven FROM vpretplatnici;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN lista;
REPEAT
FETCH lista INTO _userId, _iznos, _aktiven;
IF NOT done THEN
IF _aktiven=1 THEN
IF _iznos>0 THEN
INSERT INTO pretplata (mesec, pretplatnik, tip, iznos) VALUES (concat(year(now()),'-',_Mesec,'-01'),_userId, 'i', _iznos);
END IF;
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE lista;
END
PROCEDURE `pzadolziInternet`(_Mesec INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE _userId, _iznos, _aktiven BigInt(20);
DECLARE lista CURSOR FOR SELECT id, internet, aktiven FROM vpretplatnici;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN lista;
REPEAT
FETCH lista INTO _userId, _iznos, _aktiven;
IF NOT done THEN
IF _aktiven=1 THEN
IF _iznos>0 THEN
INSERT INTO pretplata (mesec, pretplatnik, tip, iznos) VALUES (concat(year(now()),'-',_Mesec,'-01'),_userId, 'i', _iznos);
END IF;
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE lista;
END
routing protocols enable routers to route routed protocols!