[SOLVED]Re: Stored Procedure Frage
Von: Stefan Braumeister (sbraumi@gmx.net) [Profil]
Datum: 12.11.2007 22:31
Message-ID: <fhagnm$d0o$1@online.de>
Newsgroup: de.comp.datenbanken.mysql
Datum: 12.11.2007 22:31
Message-ID: <fhagnm$d0o$1@online.de>
Newsgroup: de.comp.datenbanken.mysql
Stefan Braumeister schrieb: > Hallo NG, > > ich hab eine Frage bezüglich einer Stored Procedure, folgende Procedure: > > CREATE DEFINER=`root`@`localhost` PROCEDURE `DELETE_USER`(IN id INT) > BEGIN > > > DECLARE done INT DEFAULT 0; > DECLARE usid INT; > DECLARE uscur CURSOR FOR SELECT us_id FROM usdb WHERE re_id = id; > OPEN uscur; > REPEAT > FETCH uscur INTO usid; > IF NOT done THEN > DELETE FROM userperms WHERE us_id = usid; > END IF; > UNTIL done END REPEAT; > CLOSE uscur; > > DELETE FROM list WHERE us_id = id; > > END > > > Mein Problem ist, wenn die Tabelle usdb leer ist dann gibt es nicht zu > löschen mit Delete. "Repeat" hat nichts zu tun und es sollte nur am > Schluss "DELETE FROM list WHERE us_id = id;" ausgeführt werden. > > Rufe ich nun die Stored Procedure aus PHP auf, so bekomme ich den Fehler: > > Error in CALL management.DELETE_USER(2): No data - zero rows fetched, > selected, or processed Das Problem habe ich durch hinzufügen des Statements: DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; gelöst. > > Ist mir auch klar warum er meckert. > Gibts da jetzt ne Option in der Stored Procedure, damit er hier keinen > Fehler produziert und damit auch noch die Anweisungen danach ausführt(in > meinem Fall das Delete? > > > Grüße Stefan[ Auf dieses Posting antworten ]
