下面以常见数据库为例,给你讲一下存储过程里怎么写循环,并附上示例代码。
DELIMITER $$
CREATE PROCEDURE test_while()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 10 DO
SELECT i;
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE test_repeat()
BEGIN
DECLARE i INT DEFAULT 1;
REPEAT
SELECT i;
SET i = i + 1;
UNTIL i > 10
END REPEAT;
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE test_loop()
BEGIN
DECLARE i INT DEFAULT 1;
my_loop: LOOP
IF i > 10 THEN
LEAVE my_loop;
END IF;
SELECT i;
SET i = i + 1;
END LOOP;
END$$
DELIMITER ;
CREATE PROCEDURE test_while
AS
BEGIN
DECLARE @i INT = 1;
WHILE @i <= 10
BEGIN
PRINT @i;
SET @i = @i + 1;
END
END
CREATE OR REPLACE PROCEDURE test_loop IS
i NUMBER := 1;
BEGIN
LOOP
EXIT WHEN i > 10;
DBMS_OUTPUT.PUT_LINE(i);
i := i + 1;
END LOOP;
END;
CREATE OR REPLACE PROCEDURE test_for IS
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
DECLARE done INT DEFAULT FALSE;
DECLARE name VARCHAR(50);
DECLARE cur CURSOR FOR SELECT user_name FROM user;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO name;
IF done THEN
LEAVE read_loop;
END IF;
-- 处理数据
END LOOP;
CLOSE cur;
FOR / WHILE如果你告诉我:
我可以帮你写完全贴合业务的存储过程。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。