1. 程式人生 > >mysql while,loop,repeat迴圈,符合條件跳出迴圈

mysql while,loop,repeat迴圈,符合條件跳出迴圈

1、while迴圈

DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_test_while`$$
CREATE  PROCEDURE `sp_test_while`(
 IN p_number INT, #要迴圈的次數
 IN p_startid INT #迴圈的其實值
)
BEGIN  
DECLARE v_val INT DEFAULT 0;  
SET v_val=p_startid;
outer_label:  BEGIN  #設定一個標記
WHILE v_val<=p_number DO  
    SET v_val=v_val+1;  
    
IF(v_val=100)THEN LEAVE outer_label; #滿足條件,終止迴圈,跳轉到end outer_label標記 END IF; END WHILE; SELECT 我是while外,outer_label內的SQL; #由於這句SQL在outer_label程式碼塊內,所以level後,這句SQL將不會執行; #只要是在outer_label程式碼塊內 任意位置 Leave outer_label,那麼Leave後的程式碼將不再執行 END outer_label; SELECT CONCAT(test,v_val) AS tname;
END$$ DELIMITER ; CALL sp_test_while(1000,0);

2、loop 迴圈

DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_testloop`$$
CREATE  PROCEDURE `sp_testloop`(
 IN p_number INT, #要迴圈的次數
 IN p_startid INT #迴圈的其實值
)
BEGIN  
    DECLARE v_val INT DEFAULT 0;  
    SET v_val=p_startid;

    loop_label:  LOOP   #迴圈開始
        
SET v_val=v_val+1; IF(v_val>p_number)THEN LEAVE loop_label; #終止迴圈 END IF; END LOOP; SELECT CONCAT(testloop_,v_val) AS tname; END$$ delimiter ; CALL sp_testloop(1000,0);

3、repeat迴圈

DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_test_repeat`$$
CREATE  PROCEDURE `sp_test_repeat`(
 IN p_number INT, #要迴圈的次數
 IN p_startid INT #迴圈的其實值
)
BEGIN  
DECLARE v_val INT DEFAULT 0;  
SET v_val=p_startid;

 REPEAT  #repeat迴圈開始
 
    SET v_val=v_val+1; 
      until v_val>p_number #終止迴圈的條件,注意這裡不能使用‘;‘分號,否則報錯     
      
 END repeat; #迴圈結束 
 
 SELECT CONCAT(test,v_val) AS tname;
END$$

DELIMITER ;

CALL sp_test_repeat(1000,0);

 example:求冪函式

drop function if exists math_int;

delimiter //
create function math_int(a int ,b int)
returns double 
BEGIN
declare ret int;
set ret := 1;
-- 第一種 while迴圈
-- while b > 0 
-- do 
-- select ret*a into ret from dual;
-- set b = b - 1 ;
-- END WHILE;


-- 第二種 repeat迴圈
-- repeat 
-- select ret * a into ret from dual;
-- set b = b - 1 ;
-- until b = 0 
-- end repeat;


-- 第三種 loop迴圈
loop_label:  LOOP   #迴圈開始 迴圈名稱
select ret * a into ret from dual;
set b = b - 1 ; 
 
IF b = 0 THEN
LEAVE  loop_label;  #終止迴圈 也就意味著可以跳出指定迴圈
END IF;
END LOOP; 


return ret;
end;
//
delimiter ;
select math_int(10,2);

相關推薦

mysql while,loop,repeat迴圈符合條件跳出迴圈

1、while迴圈 DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_test_while`$$ CREATE PROCEDURE `sp_test_while`( IN p_number INT, #要迴圈的次數 IN p_startid INT #迴圈的其實值

while(i--);這句話是什麼意思什麼時候跳出迴圈

while(i--);這句話是什麼意思,什麼時候跳出迴圈? 一、先對i的值進行判斷 如果i的值0就退出 二、計算:i=i-1 再重複操作! i--表示先使用i,再讓i=i-1。 假設初始i=3。第一次while()裡的是3,while(3)=>此時i=2(i--的緣故);C裡非0都是

shell的基本語句(for迴圈while迴圈巢狀迴圈if 的多重迴圈case語句)

1.for迴圈(遍歷) for 條件 do 動作 done 練習1:檢測當前172.25.254網段主機的狀態 [[email protected] mnt]# vim test.sh 1 #!/bin/bash 2 for ((IP=1;IP<=10

python 字典a中是條件字典b中是被審查物件符合條件才取物件中的值 demon

chktype為限定的型別 lvbuff為buff及相關的條件 只有達成條件才讓取buff 程式碼 #coding:utf8 chktype = {'type':'rock','lan':'en'} lvbuff = {'buff':{'a':1}, 'type':'rock',

Java 列出資料夾下所有檔案符合條件的檔案複製到指定目錄

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class TestFile { public static void main(String[] a

MySQL--儲存過程的迴圈語句程式碼筆記--whilerepeatloop

mysql> delimiter $$ mysql> create table testB -> ( -> id int(6) not null -> ) $$ Query OK, 0 rows affected (0.86 sec) mysq

MySQL儲存過程之whilerepeat迴圈

一、while迴圈 CREATE DEFINER=`root`@`localhost` PROCEDURE `PRO_WHILE`() BEGIN DECLARE i INT DEFAULT 0; WHILE (i<10) DO /*當滿足條件的時候執行此程式碼塊*/ BE

Python(五)語法(ifelifelse 條件判斷 for inwhile 迴圈

判斷 計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。 如下例子 # -*- coding: utf-8 -*- age =input('請輸入年齡:') if age==18: print('年齡',age) elif age>18: print('超齡') el

如何從mysql資料庫中查詢指定欄位且符合條件的資料 然後拼接成json字串最後匯出json檔案

SELECT CONCAT("{'name':'",IFNULL(Name,''),"',","'sex':'",IFNULL(Sex,''),"',","'age':'",IFNULL(Age,''),"',", "'phone':'",IFNULL(Phon

Python程式語言下的條件判斷以及for迴圈while迴圈

if 語句:   作用:讓程式根據條件選擇性的執行某條語句或某些語句   說明:if語句又叫條件語句,也叫分支語句   語法:if 真值表達式1;             語句塊1         elif 真值表達式2:             語句塊2         e

php中mysql一條sql語句查詢出所有符合條件的資料該怎麼寫?

假如一個表裡有個classid欄位是類別的id,我想用一條sql語句查出classid=5的所有資料的id該怎麼查呢?正常是要迴圈,放到數組裡的吧 如圖,我想查詢classid=2的對應所有id,用

C# ArcgisEngine開發中對一個圖層進行過濾只顯示符合條件的要素

layer style where sky 要求 我們 ase get filter 轉自原文 C# ArcgisEngine開發中,對一個圖層進行過濾,只顯示符合條件的要素 有時候,我們要對圖層上的地物進行有選擇性的顯示,以此來滿足實際的功能要求。 按下面介紹的

批量屏蔽符合條件的IP地址支持添加白名單IP段增量大於指定次數的IP

{0} pytho 防火墻 bsp key val 日誌 並且 log 批量屏蔽符合條件的IP地址,支持添加白名單,IP段,增量 大概的思路是利用sh,從日誌中提取出來對應的IP地址,然後再交由python進行對比,判斷,最終將需要添加至iptables列表中的IP寫入

查詢不符合條件的資料 mysql

SELECT * FROM yh WHERE xl<>'255' AND xl<>'0' AND lpower<>'255' 一般查詢都是where 某欄位='條件';但是這次是查詢不符合條件的資料; <>表示不等於 例子如下: 1.根

c++ 查詢容器中符合條件的元素並返回iterator(find_if)

  #include <iostream> // std::cout #include <algorithm> // std::find_if #include <vector> // std::vector using name

大資料之scala(一) --- 安裝scala簡單語法介紹條件表示式輸入和輸出迴圈函式過程lazy 異常陣列

一、安裝和執行Scala解釋程式 --------------------------------------------- 1.下載scala-2.11.7.msi 2.管理員執行--安裝 3.進入scala/bin,找到scala.bat,管理員執行,進入scala命

Day2 while 迴圈格式化輸出運算子字串編碼

while 迴圈 語法結構: 語法1:: while 條件:   迴圈體 解析:判斷條件是否成立,如果條件為真,則執行迴圈體的內容,完成後,再次進行條件的判斷,重複上面的內容,知道條件不成立 語法2 : while 條件:   迴圈體 else:   程式碼塊 解析:當while 的條

Qt qtablewidget 實現篩選功能顯示符合條件的整行資訊

問題:      1、有輸入的時候顯示符合條件的整行資訊      2、沒有輸入的時候顯示所有資訊   過程:      查詢到官方提供了QTableWidget類的 &n

2、Python自學第二天(if判斷for迴圈while迴圈

1 """================ if判斷 begin ====================== 2 3 # 輸入一個年齡,判斷是成年人還是小孩 4 age = input('請輸入年齡') 5 if int(age)>=18: 6 print('成年人')

程序執行緒Event Loop(事件迴圈)Web Worker

執行緒,是程式執行流的最小單位。執行緒可與同屬一個程序的其他執行緒共享所擁有的全部資源,同一程序中的多個執行緒之間可以併發執行。執行緒有就緒,阻塞,執行三種基本狀態。 阮一峰大神針對程序和執行緒的類比,很是形象:計算機的核心CPU,是個工廠,時刻運轉著,工廠裡有很多個車間(程序),一個車間開工其他車間不能開