[ sojic @ 04.09.2007. 12:52 ] @
Dali mogu da koristim WHERE u Stored procedure?

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


[ sojic @ 04.09.2007. 15:22 ] @
Evo kako sam to resio sa PHP, ali bih hteo da stavim ovo u proceduru

Code:

$korisnici = mysql_query("SELECT id, internet as iznos, aktiven FROM vpretplatnici");
while ($pretplatnik = mysql_fetch_assoc($korisnici)) {
    if ($pretplatnik['aktiven']==1) {
        if ($pretplatnik['iznos']>0) {
            $rezultat = mysql_fetch_assoc(mysql_query("select id from pretplata where pretplatnik='{$pretplatnik[id]}' and tip='{$tip}' and mesec='{$mesec}'"));
            
            echo $pretplatnik['id']." - ".$rezultat['id']."<br>\n";
            if (!is_null($rezultat['id'])) {
                echo $pretplatnik['id']."<br>\n";
            }
            else {
                echo "zadolzen - ".$pretplatnik['id']."<br>\n";
                mysql_query("INSERT INTO pretplata (mesec, pretplatnik, tip, iznos) VALUES ('{$mesec}','{$pretplatnik[id]}', '{$tip}', '{$pretplatnik[iznos]}')");
            }
        }
    }
}