<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>

                1.什么是mysql存儲過程 存儲過程[Stored Procedure]是一組[或者是若干條SQL]為了完成特定功能的SQL語句集,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字并給定參數[如果該存儲過程帶有參數]來調用執行它。 2.存儲過程的創建 --創建語法: ``` create procedure procedureName() --同一個數據庫中,存儲過程名具有唯一性 begin #SQL語句集 end ``` 舉個栗子:創建一個查詢當前時間的存儲過程 ``` delimiter $$ create procedure procedureName() begin select now() as nowtime; end $$ delimiter; ``` 這樣我們就完成了第一個存儲過程的創建,創建成功之后我們如何調用呢,在你的SQL語句中,只需要 ``` call procedureName() --select 存儲過程名 即可調用 ``` ``` 當然,你還可以查看所有的存儲過程: show procedure status; ``` 3.存儲過程中變量的引用 存儲過程中可以通過引用變量來完成復雜的編程,在存儲過程中使用 declare 來聲明變量, 格式如下: ``` declare 變量名[一般不以@開頭且具有一定意義[@是mysql的關鍵字]] 變量類型[變量類型包括:數值類型[tinyint,int/integer,bigint,float,double,decimal],時間日期類型,字符串類型,][default 默認值[可選]] ``` 又一個栗子: ``` delimiter $$ --delimiter 定義結束符 create procedure procedureName() begin --開始存儲過程 declare age int default 18; --聲明一個int類型的age變量,并且默認值為18 declare myname varchar(255) default 'xiaoxiao'; --聲明一個myname的varchar類型的變量,默認值為'xiaoxiao' select CONCAT(myname,age) as descr; --查詢剛剛定義的變量并取別名為descr end $$ --結束存儲過程 delimiter; --將mysql的存儲過程設置為 ; ``` 既然我們可以為存儲過程賦值,那么我們可以想到是否可以在存儲過程中進行變量的計算,答案也是也可以的,再來一個栗子: ``` delimiter $$ create procedure procedureName() begin declare age int default 18; declare height int default 171; set age := age + 18; -- 變量的加法運算,變量的運算格式為,set 變量名 := 變量名 運算符[+,-,* ,/]值 select age; end $$ delimiter; --調用 call procedureName() --結果為 age 36 ``` 4.mysql中的流程控制 舉個栗子說明一下: ``` delimiter $$ create procedure procedureName() begin declare age int default 18; declare height int default 171; set age := age + 18; -- 變量的加法運算,變量的運算格式為,set 變量名 := 變量名 運算符(+,-,* ,/)值 if age > 30 then select '30歲,中年啦'; else select '小年輕'; end if; -- end if結束if語句塊 end $$ delimiter; ``` 調用的結果為:'30歲,中年啦'; 類似的語句還有 case...when... 5.存儲過程參數的傳遞 存儲過程主要分為三種參數類型,in[輸入參數],out[輸出參數],INOUT[輸入輸出參數] IN[輸入]參數類型:該參數的值必須在調用存儲過程時指定,如果在調用存儲過程中修改該參數的值則該值不能被返回 IN參數類型: 基本格式: ``` delimiter $$ create procedure InType(in type char) -- 參數類型[IN/OUT/INOUT,參數名,參數類型[int,char,varchar等...]] begin IF type='A' THEN SELECT '我是IN參數A'; ELSEIF type='B' THEN SELECT '我是IN參數B'; ELSE SELECT '其他'; END IF; end $$ delimiter; ``` 調用: ``` call InType('A'); -- 輸出'我是IN參數A' ``` OUT[輸出]參數類型: ``` delimiter $$ create procedure outType(OUT type int) begin secelt type = 1+2; end $$ delimiter; ``` 調用: ``` call outType(@type); --輸出 3 ``` INOUT[輸入輸出]參數類型: ``` delimiter $$ create procedure inoutType(INOUT ntime INT) begin declare nowtime INT(11); --定義變量 IF ntime > (select unix_timestamp) THEN --判斷 SET nowtime = (select unix_timestamp); ELSE SET nowtime = ntime; END IF; SET ntime = nowtime; --返回賦值 end $$ delimiter; -- 傳遞一個時間戳,mysql對當前時間戳進行判斷,如果傳遞進來的時間戳大于當前時間戳,設置nowtime變量為當前時間戳,否則則為傳遞進來的時間戳,并輸出結果 ``` 一個開發過程中使用存儲過程快速填充表的栗子: 栗子中user表有四個字段,分別為,name,age,sex,is_delete,快速為表填充6百萬的測試數據,如下: ``` delimiter $$ create procedure fillData() begin set @i =1; --set 定義變量 while @i<=6000000 do --開始循環,循環變量小于6000000 insert into user (name,age,sex,is_delete)values(CONCAT("我是第",@i,"個name"),(SELECT RAND() * 20),(SELECT RAND() * 2),(SELECT RAND() * 1)); --批量向表里面插入6百萬條數據,CONCAT為拼接字符串 set @i = @i+1; --變量累加 end while; --結束循環 end $$ delimiter; ```
                  <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>

                              哎呀哎呀视频在线观看