<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                流程控制 MySQL支持if,case,iterate,leave,loop,while,repeat語句作為存儲過程和函數中的流程控制語句,另外return語句也是函數中的特定流程控制語句 1、case Case語句在存儲過程或函數中表明了復雜的條件選擇語句 第一個語句中case_value與后面各句的when_value依次做相等的對比,如果碰到相等的,則執行對應的后面的statement_list,否則接著對比,如果都沒有匹配,則執行else后面的statement_list 第二個語句中當search_condition滿足true/1的結果時,則執行對應的statement_list,否則執行else對應的statement_list Statement_list可以包含一個或多個SQL語句 ``` delimiter // CREATE PROCEDURE exp_case(v_sid int) BEGIN DECLARE v INT DEFAULT 1; select sex into v from students where sid=v_sid; CASE v WHEN 0 THEN update students set sex=1 where sid=v_sid; WHEN 1 THEN update students set sex=0 where sid=v_sid; ELSE update students set sex=-1 where sid=v_sid; END CASE; END; // delimiter ; mysql> call exp_case(1); Query OK, 1 row affected (0.01 sec) ``` 2、if IF語句在存儲過程或函數中表明了基礎的條件選擇語句 if search_condition then statement_list elseif search_condition then statement_list.... else statement_list end if IF語句中如果search_condition滿足true/1的條件,則執行對應的statement_list,否則再判斷elseif中的search_condition是否滿足true/1的條件,如果都不滿足則執行else中的statement_list語句 Statement_list中可以包含一個或多個SQL語句 ``` DELIMITER // CREATE FUNCTION SimpleCompare(n INT, m INT) RETURNS VARCHAR(20) BEGIN DECLARE s VARCHAR(20); IF n > m THEN SET s = '>'; ELSEIF n = m THEN SET s = '='; ELSE SET s = '<'; END IF; SET s = CONCAT(n, ' ', s, ' ', m); RETURN s; END // DELIMITER ; mysql> select simplecompare(1,2); +--------------------+ | simplecompare(1,2) | +--------------------+ | 1 < 2 | ``` ``` DELIMITER // CREATE FUNCTION VerboseCompare (n INT, m INT) ##嵌套if語句 RETURNS VARCHAR(50) BEGIN DECLARE s VARCHAR(50); IF n = m THEN SET s = 'equals'; ELSE IF n > m THEN SET s = 'greater'; ELSE SET s = 'less'; END IF; SET s = CONCAT('is ', s, ' than'); END IF; SET s = CONCAT(n, ' ', s, ' ', m, '.'); RETURN s; END // DELIMITER ; mysql> select verbosecompare(1,2); +---------------------+ | verbosecompare(1,2) | +---------------------+ | 1 is less than 2. | ``` 3、iterate Iterate語句僅出現在loop,repeat,while循環語句中,其含義表示重新開始此循環 iterrate label ##### Label表示自定義的標簽名 4、leave Leave語句表明退出指定標簽的流程控制語句塊 leave label ##### Label表示自定義的標簽名 ``` mysql> delimiter // mysql> CREATE PROCEDURE doiterate(IN p1 INT, OUT p2 int) -> BEGIN -> label1: LOOP -> SET p1 = p1 + 1; -> IF p1 < 10 THEN ITERATE label1; END IF; -> LEAVE label1; -> END LOOP label1; -> set p2=p1; -> END; -> // Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; ``` 5.loop Loop語句是存儲過程或函數中表達循環執行的一種方式 [begin_label:] LOOP statement_list END LOOP [end_label] 6、repeat repeat語句是存儲過程或函數中表達循環執行的一種方式 ``` [begin_label:] REPEAT statement_list UNTIL search_condition END REPEAT [end_label] ``` ``` mysql> CREATE PROCEDURE dorepeat(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> CALL dorepeat(1000)// Query OK, 0 rows affected (0.00 sec) mysql> SELECT @x// +------+ | @x | +------+ | 1001 | +------+ 1 row in set (0.00 sec) ``` 7、while while語句是存儲過程或函數中表達循環執行的一種方式 Syntax: [begin_label:] WHILE search_condition DO statement_list END WHILE [end_label] 當search_condition返回為true時,則循環執行statement_list中的語句,直到search_condition的結果返回為false Statement_list中可以包含一個或多個SQL語句 ``` DELIMITER // CREATE PROCEDURE dowhile() BEGIN DECLARE v1 INT DEFAULT 5; WHILE v1 > 0 DO update students set sex=-1 where sid=v1; SET v1 = v1 - 1; END WHILE; END; // DELIMITER ; mysql> call dowhile(); Query OK, 1 row affected (0.00 sec) mysql> select * from students; +------+-------+------+ | sid | sname | sex | +------+-------+------+ | 1 | a | -1 | | 2 | b | -1 | | 3 | c | -1 | ``` 8、return Return語句用在函數中,用來終結函數的執行并將指定值返回給調用者 return expr 在函數中必須要有至少一個return語句,當有多個return語句時則表明函數有多種退出的方式 ``` delimiter // create function doreturn() returns int begin select sex into @a from students where sid=1; if @a=1 then return 1; elseif @a=0 then return 0; else return 999; end if; end; // delimiter ; mysql> select doreturn(); +------------+ | doreturn() | +------------+ | 999 | ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看