W MySQL mam tę procedurę składowaną z pętlą For:
DELIMITER $$
CREATE PROCEDURE ABC()
BEGIN
DECLARE a INT Default 0 ;
simple_loop: LOOP
SET a=a+1;
select a;
IF a=5 THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
END $$
Zawsze się drukuje 1
. Jaka jest poprawna składnia pętli MySQL for?
Odpowiedzi:
źródło
BEGIN...END
i utworzenie procedury, jeśli chcę tylko użyćLOOP
?Przykład składni pętli While w MySQL:
Które wydruki:
Przykład składni pętli REPEAT w MySQL:
Które wydruki:
Przykład składni pętli FOR w MySQL:
Które wydruki:
Wykonaj samouczek: http://www.mysqltutorial.org/stored-procedures-loop.aspx
Jeśli przyłapię cię na wprowadzaniu tego rodzaju konstrukcji pętli for MySQL do produkcji, strzelę do ciebie z wyrzutni rakiet piankowych. Możesz użyć klucza do rur, aby wbić gwóźdź, ale takie postępowanie sprawia, że wyglądasz głupio.
źródło
declare str VARCHAR(255) default '';
w konsoli MySQL (5.6) daje mi komunikat o błędzieError 1064 (42000): ... for the right syntax to use near '' at line 3
, który jest jasny jak błoto (chociaż zakładam, że nie podoba mu się klauzula DEFAULT).delimiter //
przed uruchomieniem tego.Załóżmy, że masz jedną tabelę o nazwie „tabela1”. Zawiera jedną kolumnę „col1” z typem varchar. Zapytanie do tabeli skrzynek podano poniżej
Teraz, jeśli chcesz wstawić liczbę od 1 do 50 w tej tabeli, użyj następującej procedury składowanej
Aby wywołać tę procedurę składowaną, użyj
źródło
Możesz zamienić tę lokalną zmienną na globalną, byłoby łatwiej.
źródło