欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL存儲(chǔ)過(guò)程圖文實(shí)例講解

 更新時(shí)間:2022年03月09日 15:56:27   作者:程裕強(qiáng)  
雖然MySQL的存儲(chǔ)過(guò)程一般情況下是不會(huì)使用到的,但是在一些特殊場(chǎng)景中,還是有需求的,下面這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過(guò)程的相關(guān)資料,需要的朋友可以參考下

MySQL的存儲(chǔ)過(guò)程

存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)的一個(gè)重要的功能,MySQL 5.0以前并不支持存儲(chǔ)過(guò)程,這使得MySQL在應(yīng)用上大打折扣。好在MySQL 5.0開(kāi)始支持存儲(chǔ)過(guò)程,這樣即可以大大提高數(shù)據(jù)庫(kù)的處理速度,同時(shí)也可以提高數(shù)據(jù)庫(kù)編程的靈活性。

MySQL存儲(chǔ)過(guò)程的創(chuàng)建

語(yǔ)法

CREATE PROCEDURE  過(guò)程名([[IN|OUT|INOUT] 參數(shù)名 數(shù)據(jù)類型[,[IN|OUT|INOUT] 參數(shù)名 數(shù)據(jù)類型…]]) [特性 ...] 過(guò)程體

DELIMITER //
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;
    END
    //
DELIMITER ;

分隔符

MySQL默認(rèn)以";"為分隔符,如果沒(méi)有聲明分割符,則編譯器會(huì)把存儲(chǔ)過(guò)程當(dāng)成SQL語(yǔ)句進(jìn)行處理,因此編譯過(guò)程會(huì)報(bào)錯(cuò),所以要事先用“DELIMITER //”聲明當(dāng)前段分隔符,讓編譯器把兩個(gè)"//"之間的內(nèi)容當(dāng)做存儲(chǔ)過(guò)程的代碼,不會(huì)執(zhí)行這些代碼;“DELIMITER ;”的意為把分隔符還原。

參數(shù)

存儲(chǔ)過(guò)程根據(jù)需要可能會(huì)有輸入、輸出、輸入輸出參數(shù),如果有多個(gè)參數(shù)用","分割開(kāi)。MySQL存儲(chǔ)過(guò)程的參數(shù)用在存儲(chǔ)過(guò)程的定義,共有三種參數(shù)類型,IN,OUT,INOUT:

IN參數(shù)的值必須在調(diào)用存儲(chǔ)過(guò)程時(shí)指定,在存儲(chǔ)過(guò)程中修改該參數(shù)的值不能被返回,為默認(rèn)值OUT:該值可在存儲(chǔ)過(guò)程內(nèi)部被改變,并可返回INOUT:調(diào)用時(shí)指定,并且可被改變和返回

過(guò)程體

過(guò)程體的開(kāi)始與結(jié)束使用BEGIN與END進(jìn)行標(biāo)識(shí)。

1、簡(jiǎn)單實(shí)例

create procedure demo.p_test1()
begin
  -- 使用 declare語(yǔ)句聲明一個(gè)變量
  declare id int default 0;
  declare name varchar(50) default '';
  -- 使用set語(yǔ)句給變量賦值
  set id=7521;
  -- 將users表中id=1的名稱賦值給username
  select ename into name from demo.emp where empno=id;
  -- 返回變量
  select name;
end;

2、通過(guò)游標(biāo)遍歷結(jié)果集

create table demo.test(
	id int,
	cnt varchar(50)
)
create procedure demo.p_test2()
-- 通過(guò)游標(biāo)遍歷結(jié)果集
begin
  -- 聲明變量
  declare id int default 0;
  declare name varchar(50) default '';
  declare done boolean default 1;
  -- 聲明游標(biāo)
  declare rs cursor for SELECT deptno,dname from demo.dept ;
  -- 定義異常:
  declare continue handler for SQLSTATE '02000' SET done = 0; 
  -- 打開(kāi)游標(biāo)
  open rs;
  delete from demo.test;
  while done do 
  	begin
	  fetch rs into id,name;
      INSERT into demo.test SELECT e.deptno,count(1) from demo.emp e WHERE e.deptno =id group by e.deptno;
     end ;
  end while;
  -- 關(guān)閉游標(biāo)
  close rs;
end;
call demo.p_test2();

SELECT * from  demo.test;

總結(jié) 

到此這篇關(guān)于MySQL存儲(chǔ)過(guò)程講解的文章就介紹到這了,更多相關(guān)MySQL存儲(chǔ)過(guò)程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • My Sql 1067錯(cuò)誤與編碼問(wèn)題的解決方案

    My Sql 1067錯(cuò)誤與編碼問(wèn)題的解決方案

    My Sql 大部分都是用綠色版(解壓版) 然后注冊(cè)服務(wù)簡(jiǎn)單方便,但是配置文件也很讓人糾結(jié),下面小編給大家?guī)?lái)了My Sql 1067錯(cuò)誤與編碼問(wèn)題的解決方案,感興趣的朋友參考下吧
    2016-11-11
  • mysql中取字符串中的數(shù)字的語(yǔ)句

    mysql中取字符串中的數(shù)字的語(yǔ)句

    在很多時(shí)間我們需要把字符串的數(shù)字給取出來(lái),通常大家會(huì)用php,asp等這類來(lái)操作,本文章介紹了在sql中取字符中的數(shù)字辦法,有需要的朋友可以參考一下
    2012-04-04
  • MySQL實(shí)現(xiàn)每天定時(shí)12點(diǎn)彈出黑窗口

    MySQL實(shí)現(xiàn)每天定時(shí)12點(diǎn)彈出黑窗口

    這篇文章主要介紹了MySQL實(shí)現(xiàn)每天定時(shí)12點(diǎn)彈出黑窗口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 解決MySQL因不能創(chuàng)建臨時(shí)文件而導(dǎo)致無(wú)法啟動(dòng)的方法

    解決MySQL因不能創(chuàng)建臨時(shí)文件而導(dǎo)致無(wú)法啟動(dòng)的方法

    這篇文章主要跟大家介紹了關(guān)于解決MySQL因不能創(chuàng)建臨時(shí)文件而導(dǎo)致無(wú)法啟動(dòng)的方法,文中通過(guò)示例代碼介紹了詳細(xì)的解決方法,對(duì)大家具有一定的的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • MySQL中show命令方法得到表列及整個(gè)庫(kù)的詳細(xì)信息(精品珍藏)

    MySQL中show命令方法得到表列及整個(gè)庫(kù)的詳細(xì)信息(精品珍藏)

    MySQL中show 句法得到表列及整個(gè)庫(kù)的詳細(xì)信息,方便查看數(shù)據(jù)庫(kù)的詳細(xì)信息。
    2010-11-11
  • mysql中update按照多重條件進(jìn)行更新處理的方案

    mysql中update按照多重條件進(jìn)行更新處理的方案

    更新數(shù)據(jù)是使用數(shù)據(jù)庫(kù)時(shí)最重要的任務(wù)之一,下面這篇文章主要給大家介紹了關(guān)于mysql中update按照多重條件進(jìn)行更新處理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • MySQL 5.6 GTID新特性實(shí)踐

    MySQL 5.6 GTID新特性實(shí)踐

    GTID(Global Transaction ID)是對(duì)于一個(gè)已提交事務(wù)的編號(hào),并且是一個(gè)全局唯一的編號(hào)。下文給大家介紹MySQL 5.6 GTID新特性實(shí)踐,感興趣的朋友一起看看吧
    2016-10-10
  • InnoDB實(shí)現(xiàn)序列化隔離級(jí)別的方法

    InnoDB實(shí)現(xiàn)序列化隔離級(jí)別的方法

    這篇文章主要介紹了InnoDB實(shí)現(xiàn)序列化隔離級(jí)別的方法,文中介紹的非常詳細(xì),相信對(duì)大家學(xué)習(xí)或者使用InnoDB具有一定的參考價(jià)值,需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-04-04
  • MySQL sleep函數(shù)使用方法詳解

    MySQL sleep函數(shù)使用方法詳解

    sleep函數(shù)時(shí)「延時(shí)」指定時(shí)間(單位秒),也就是讓程序停止執(zhí)行一段指定的時(shí)間,本文就給大家簡(jiǎn)單的介紹一下MySQL sleep函數(shù)使用方法,需要的朋友可以參考下
    2023-07-07
  • MYSQL大小寫(xiě)不敏感導(dǎo)致用戶登錄異常問(wèn)題

    MYSQL大小寫(xiě)不敏感導(dǎo)致用戶登錄異常問(wèn)題

    這篇文章主要介紹了MYSQL大小寫(xiě)不敏感導(dǎo)致用戶登錄異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論