MySQL預存程序

來源:互聯網
上載者:User

標籤:style   blog   color   ar   使用   sp   div   log   bs   

  下面是一個MySQL預存程序的簡單例子,  目的是返回最新插入的一條記錄的id值。   

 demiliter |      drop  procedure if exists addUser |      create procedure addUser(in pname varchar(40),in birthday date,out pid int)          begin          insert into user(name,birthday) values (pname,birthday);                      select last_insert_id into pid;          end |      demilter;

        MySQL中執行一條語句的依據是分號(";"),碰到了”;“則會將之前的輸入作為一條語句來執行。 demiliter |會將判斷的依據由”;“換成”|“,碰到”|“認為是一條語句的結束。如果不進行轉換,遇到”;“將之前的執行則一定會出錯。  

       上面的例子現用 demiliter |會將判斷的依據由”;“換成”|“,最後再用demiliter ;會將判斷的依據由”|“換成”;“。

       建立預存程序的文法是 create procedure名稱(輸入/輸出,參數名,參數類型),對應於例子中的 create procedure addUser(in pname varchar(40),in birthday date,out pid int)。
       begin和end之間的就是預存程序要完成的功能。

      

       create procedure的參數類型有in,out,inout三種。

       in和out,inout的不同點:修改的結果將不能返回,可以看下面的例子。      

 demiliter //      drop  procedure if exists in_paramter_test//      create procedure  in_paramter_test(in p_in int)          begin         select  p_in ;                   set  p_in =2;                   select  p_in ;         end //      demilter;

      設定臨時變數:mysql > set @p_in = 1;

      mysql >call in_paramter_test(@p_in);

     +--------+

     |   p_in  |

     +--------+

      |     1    |

      +--------+

 

     +--------+

     |   p_in  |

     +--------+

      |     2    |

      +--------+

       mysql >select @p_in;

     +--------+

     |   p_in  |

     +--------+

      |    1    |

      +--------+

     使用out的例子:

 demiliter //      drop  procedure if exists out_paramter_test//      create procedure  out_paramter_test(out p_out int)          begin         select  p_out ;                   set  p_in =2;                   select  p_out ;         end //      demilter;

       執行和in相同的操作,結果都是2.


       @使用者變數,串連參數。

 

 

      

 

MySQL預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.