mysql-(五)-預存程序

來源:互聯網
上載者:User

標籤:

5.1什麼是預存程序

帶有邏輯的sql語句

  之前的sql沒有條件判斷,沒有迴圈

  預存程序帶上流程式控制制語句(if while)

5.2預存程序的特點

 1) 執行效率非常快!預存程序在資料庫服務端執行

2)  移值性很差,不同資料庫不能一直

文法:

DELIMITER $   --聲明結束符號CREATE PROCEDURE pro_test()BEGIN    --可寫多個sql語句    SELECT × FROM employee;END $

 

-- 執行預存程序

CALL pro_test();

參數

帶有輸入參數的預存程序

--需求傳入一個員工的id,查詢員工資訊

//帶有輸入參數的預存程序

DELIMITER $

CREATE PROCEDURE pro_findById(IN eid INT)  --IN傳入參數

BEGIN

      SELECT* FROM emplotee WHERE id = eid;

END $

---調用

CALL pro_findById(4);

---帶有輸出參數的預存程序

DELIMITER $

CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20))  --OUT:輸出參數

BEGIN

      SET str = "這是一個輸出參數"

END $

--刪除預存程序

drop PROCEDURE pro_testOut;

--如何接受返回參數的值

--mysql全域變數

參看所有全域變數

--show variables

模糊查詢全域變數

--show variables like "character_%"

接受資料編碼設定

--character_set_client;

輸出資料編碼設定

--character_set_results;

 

×××會話變數---只存在於當前用戶端與伺服器端的一次串連當中,如果連結斷開,那麼會話變數全部消失

定義一個會話的變數

SET @NAME =‘eric‘

查看會話變數

select @NAME;

×××局部變數,只要預存程序執行完畢,局部變數就丟失

×××1)定義一個會話變數name,2)使用name會話 

CALL pro_testOut(@NAME);

***帶有輸入輸出參數的預存程序

DELIMITER $

CREATE PROCEDURE pro_testInuut(INOUT n INT)

BEGIN

    SELECT n;

    SET n = 500;

END$

--帶有條件判斷的預存程序

DELIMITER $

CREATE PROCEFURE pro_testIf(IN num INT , OUT str VARCHAR(20))

BEGIN

       IF num = 1 THEN

              SET str="星期一";

       ELSEIF num = 2 THEN

              SET str="星期二";

      ELSE 

              SET str="輸入有錯誤"

      END IF;

END$

 

CALL pro_testIf(1,@str)

SELECT @ str;

**帶有迴圈過程的預存程序

DELIMITER $

CREATE PROCEDURE pro_testWhile(IN num INT , OUT result INT)

BEGIN

      DECLARE i INT DEFAULT 1;

      DECLARE vsum INT DEFAULT 0;

      WHILE i < =num DO

          SET vsum = vsum + i;

          i = i +1;

       END WHILE;

       SET result = vsum;

END $

使用查詢的結果作為傳回值

DELIMITER $

CRETAE PROCEDURE pro_findById(IN eid INT, OUT vname VARCHAR(20))

BEGIN 

        SELECT empName INTO vname FROM employee WHERE id = eid;

END $

 

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.