nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

[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
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 ]