cursor mysql

Status
Niet open voor verdere reacties.

nevek

Nieuwe gebruiker
Lid geworden
9 jan 2015
Berichten
4
Dag iedereen,

Ik heb een een probleempje met onderstaande cursor

Code:
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `controleDeadlines`()
BEGIN

	#declaratie variabelen die nodig zijn
	declare cId int;
	declare cDeadline text;
	declare cUitgevoerd date;
	declare cOpmerking text;
	declare cStatus text;
	declare DONE int default FALSE;
	declare tempdate date;
	
	#declaratie cursor
	declare cursorDeadlinesIndicatoren cursor for
	select id,deadline,status,opmerking,uitgevoerd from deadlines_indicatoren d
	join indicatoren i on d.ind_id = i.IND_Id
	where i.Type_Uitgevoerd="datum";
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = TRUE;
	
	#cursor starten
	OPEN cursorDeadlinesIndicatoren;
		read_loop: loop
			fetch cursorDeadlinesIndicatoren into cId,cDeadline,cStatus,cOpmerking,cUitgevoerd;
			
			IF DONE THEN
				leave read_loop;
			END IF;
			
			#omzetten deadline naar geldig date type
			IF ((cUitgevoerd = '' or cUitgevoerd is null) and ( str_to_date(cDeadline,'%d/%m/%Y')< current_date)) then
				UPDATE deadlines_indicatoren
				set deadlines_indicatoren.uitgevoerd ="01/01/3000",deadlines_indicatoren.opmerking="vergeten invullen"
				where deadlines_indicatoren.id = cId;
			END IF;			
		END LOOP;
	close cursorDeadlinesIndicatoren;	
END

Om de een of andere reden waar ik steeds kijk wilt die niet in de if te gaan als het uitgevoerd veld leeg is (niet null maar ook geen tekst).
Hebben jullie tips?
 
Afhankelijk van hoe de tabel gedefinieerd is een niet ingevulde datum niet leeg ('') maar '0000-00-00 00:00:00'

Volgens een forumpost die ik gevonden heb werkt dit ook soms:

UNIX_TIMESTAMP(cUitgevoerd) = 0
 
Het uigevoerd veld is een text veld aangezien ik er ook andere waarden moet kunnen in bewaren
 
is current_date een standaard variabele? anders loop je misschien vast op het tweede deel van je statement. Het is een beetje moeilijk debuggen van een afstand.
 
Hoi,

cUitgevoerd moest een text zijn in de plaats van date (uitgevoerd kan in de db zowel een datum (d/m/Y zijn als een integer).
Domme fout van mij maar fouten zijn er om uit te leren.
Bedankt voor de hulp wampier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan