自分が作成した、又は他の人が作成したprocedureの内容を確認したい場合が
業務上あるかと思います。そんな時は以下の方法で確認する事が出来ます。

その1) information_schemaから情報を呼び出す。
該当するテーブルはROUTINESテーブルになります。

information_schema_routines


select ROUTINE_NAME,ROUTINE_DEFINITION
from information_schema.ROUTINES
where ROUTINE_SCHEMA = 'STUDY'
AND ROUTINE_NAME = 'DO_WHILE_TEST'\G

routines

その2) SHOW CREATEステートメントにて確認(information_schemaから情報を得ている)

SHOW CREATE PROCEDURE STUDY.DO_WHILE_TEST\G

show_create_procedure

おまけ) SHOW PROCEDURE STATUSでは内容の確認は出来ないが状態を確認出来る。
SHOW PROCEDURE STATUS LIKE 'DO_WHILE_TEST'\G

show_procedure_status1

参考サイト

21.14. INFORMATION_SCHEMA ROUTINES テーブル


WHILE ステートメント

WHILEステートメント中のステートメントリストは、search_conditionが真になるまで繰り返されます。
statement_listは複数のステートメントから成り立っています。
CHECK WHILEステートメントにはラベルを貼ることができます。 begin_labelも存在していない限り、
end_labelを附与することはできません。両方が存在する場合、これらは同じでなければなりません。


[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]


REPEAT は常に、少なくとも1回入力ループを書き込みます。
WHILEはLOOPを1回も実行しない事があります。


delimiter //

CREATE PROCEDURE DO_WHILE_TEST(p1 int)
BEGIN
DECLARE v1 INT DEFAULT 3;
WHILE v1 > p1 DO
SELECT v1;
SET v1 = v1 - 1;
END WHILE;
END
//

delimiter ;

do_while1


select ROUTINE_NAME,ROUTINE_SCHEMA,SECURITY_TYPE from information_schema.ROUTINES;

do_while_definer

参考サイト
17.2.10.7. WHILE ステートメント


REPEAT ステートメント

REPEATステートメント中のステートメントリストは、search_conditionが真になるまで繰り返されます。
このようにして、REPEAT は常に、少なくとも1回入力ループを書き込みます
statement_list は複数のステートメントから成り立っています。

REPEATステートメントにはラベルを貼ることができます。begin_label がなければ、
end_label を与える事はできません。両方が存在する場合、これらは同じでなければなりません。


[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]


mysql> delimiter //
mysql> CREATE PROCEDURE REPEATE_TEST(p1 INT)
-> BEGIN
-> SET @x = 0;
-> REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> CALL REPEATE_TEST(1000);
Query OK, 0 rows affected (0.06 sec)

mysql> SELECT @x;
+------+
| @x |
+------+
| 1001 |
+------+
1 row in set (0.00 sec)

mysql> CALL REPEATE_TEST(3000);
Query OK, 0 rows affected (0.15 sec)

mysql> SELECT @x;
+------+
| @x |
+------+
| 3001 |
+------+
1 row in set (0.00 sec)

mysql> CALL REPEATE_TEST(1);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x;
+------+
| @x |
+------+
| 2 |
+------+
1 row in set (0.01 sec)

mysql>

repeate


select ROUTINE_NAME,ROUTINE_SCHEMA,SECURITY_TYPE
from information_schema.ROUTINES;

reprate_1

参考サイト
17.2.10.6. REPEAT ステートメント