MySQL資料庫的預存程序

來源:互聯網
上載者:User

標籤:例子   iter   安全   儲存   執行   輸入輸出   call   end   uname   

一、預存程序
1、定義:一組可程式化的函數,是為了完成特定功能的SQL語句集,經編譯建立並儲存在資料庫中,使用者可通過指定預存程序的名字並給定參數(需要時)來調用執行

2、優點:①將重複性很高的一些操作,封裝到一個預存程序中,簡化了對這些SQL的調用
           ②批量處理:SQL+迴圈,減少流量,也就是“跑批”
      ③統一介面,確保資料的安全

3、>預存程序就是具有名字的一段代碼,用來完成一個特定的功能。
   >建立的預存程序儲存在資料庫的資料字典中。

4、基本建立格式

1 delimiter//    -- 將SQL語句的結束標記設定為//2 DROP PROCEDURE IF EXISTS testprint; -- 如果存在該名字的預存程序則刪除3 CREATE PROCEDURE testprint() -- 建立一個名字為testprint的預存程序,    -- 括弧裡面可以傳參數:CREATE PROCEDURE mytest(in sid INT,in suid INT)4 BEGIN    -- 代碼部分開始5 SELECT ‘你好,成都‘ as infos; -- 預存程序的代碼部分6 END;    -- 代碼部分結束7 //    -- 結束標記8 delimiter; -- 編寫編譯結束後將SQL語句的結束標記還原

5、調用

 -- 調用無參預存程序CALL testprint();-- 調用有參數的預存程序set @stuid = 1;SET @subid = 1;CALL mytest(@stuid,@subid);    

 

6、預存程序的參數
預存程序可以有0個或多個參數,用於預存程序的定義。
3種參數類型:
  IN輸入參數:表示調用者向過程傳入值(傳入值可以是字面量或變數)
  OUT輸出參數:表示過程向調用者傳出值(可以返回多個值)(傳出值只能是變數)
  INOUT輸入輸出參數:既表示調用者向過程傳入值,又表示過程向調用者傳出值(值只能是變數)
建議:>輸入值使用in參數;
>傳回值使用out參數;
>inout參數就盡量的少用。
例子:
1)、傳入學生和科目id ,得到該學生該科目的成績

 1 delimiter $$  2 DROP PROCEDURE IF EXISTS mytest; 3 CREATE PROCEDURE mytest(in sid INT,in suid INT) 4 BEGIN 5 UPDATE score SET score.scscore=scscore+5  6 WHERE score.sid = sid AND score.suid = suid; 7 END; 8 $$ 9 delimiter;10 11 set @stuid = 1;12 SET @subid = 1;13 CALL mytest(@stuid,@subid);

 

2)、-- 傳入學生序號,擷取顯示該學生的姓名

 1 delimiter $$  2 DROP PROCEDURE IF EXISTS getstuname; 3 CREATE PROCEDURE getstuname(in sid INT,out stuname VARCHAR(100)) 4 BEGIN 5 SELECT student.sname into stuname FROM student WHERE student.sid = sid; 6 END; 7 $$ 8 delimiter; 9 10 set @stuid = 2;11 CALL getstuname(@stuid,@stuname);12 SELECT @stuid as sid,@stuname AS stuname;

 

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.