2012-04-03 6 views
3

Ich habe auf einer gespeicherten Prozedur gearbeitet, die in einer Schleife eine select-Anweisung ausgeführt wird.MySQL Stored Procedure, nur mehrere SELECTs eine Zeile zurückgeben?

Wenn Ergebnisse durch mysqli oder phpMyAdmin sehen, erhalte ich nur eine Zeile. Was muss ich tun, um mehrere Zeilen zurückzugeben?

Hier ist ein wirklich einfaches Beispiel, das mein Problem darstellt ....

DROP PROCEDURE IF EXISTS simple // 
CREATE PROCEDURE simple() 
BEGIN 

DECLARE c INT(10); 
SET c = 1; 

REPEAT 

    SELECT c; 
    SET c = c + 1; 

UNTIL c >= 10 END REPEAT; 

END // 

Antwort

1

Ich denke, der beste Weg, dies zu umgehen würde tatsächlich die Ausgabe in eine temporäre Tabelle zu speichern, und dann eine endgültige Auswahl zu tun am Ende der While-Schleife.

DROP PROCEDURE IF EXISTS simple // 
CREATE PROCEDURE simple() 
BEGIN 

    CREATE TEMPORARY TABLE output (finalC INT(10)); 

    DECLARE c INT(10); 
    SET c = 1; 

    REPEAT 

     INSERT INTO output SELECT c; 
     SET c = c + 1; 

    UNTIL c >= 10 END REPEAT; 

    SELECT * FROM output; 

END // 
+0

Danke für die Hilfe! – christian