最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql的 存儲(chǔ)過(guò)程procedure及具體案例

 更新時(shí)間:2024年06月09日 11:28:57   作者:cssl-虞老師  
存儲(chǔ)過(guò)程是一組為了完成特定功能的SQL語(yǔ)句集合,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字和參數(shù)(如果有)來(lái)執(zhí)行它,今天通過(guò)本文給大家介紹Mysql的 存儲(chǔ)過(guò)程procedure及具體案例,感興趣的朋友一起看看吧

什么是存儲(chǔ)過(guò)程

存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集合,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字和參數(shù)(如果有)來(lái)執(zhí)行它。存儲(chǔ)過(guò)程可以在很多數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中找到,如SQL Server、Oracle、MySQL等。

存儲(chǔ)過(guò)程的好處:

  • 代碼重用:存儲(chǔ)過(guò)程允許你編寫(xiě)一次代碼,然后在多個(gè)地方重復(fù)使用。
  • 簡(jiǎn)化操作:對(duì)于復(fù)雜的數(shù)據(jù)庫(kù)操作,可以將這些操作封裝在存儲(chǔ)過(guò)程中,用戶(hù)只需調(diào)用存儲(chǔ)過(guò)程即可。
  • 提高性能:存儲(chǔ)過(guò)程在首次執(zhí)行時(shí)會(huì)進(jìn)行編譯和優(yōu)化,后續(xù)的調(diào)用會(huì)重用這些編譯后的代碼,從而提高性能。
  • 安全性:通過(guò)存儲(chǔ)過(guò)程,你可以限制對(duì)基礎(chǔ)表的直接訪問(wèn),只允許通過(guò)預(yù)定義的、受控的接口進(jìn)行訪問(wèn)。
  • 集中管理:所有的數(shù)據(jù)庫(kù)操作邏輯都存儲(chǔ)在數(shù)據(jù)庫(kù)中,使得管理和維護(hù)更加容易

使用存儲(chǔ)過(guò)程需要注意的是 :

1. declare語(yǔ)句只能放在存儲(chǔ)過(guò)程的開(kāi)始位置,放在后面就會(huì)報(bào)錯(cuò) 
2. if 語(yǔ)句的后面必須有then,但是不需要begin,在if結(jié)束時(shí)需要end if 
3. 判斷是否為NULL倒是和MSSQL一樣都有IS NULL 
4. delimiter是定界符的意思在結(jié)束的end后面要添加定界符 
5. end if之后必須跟分號(hào),否則語(yǔ)法錯(cuò)誤 
6. while后面跟條件,條件后面要跟一個(gè)do,在while循環(huán)體結(jié)束之后需要end while并以分號(hào)結(jié)束。
7. in 表入?yún)?默認(rèn)) , out 表出參 , inout 表出入?yún)?br />8. 兩種賦值方式: set ,select into
SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
SET a = 0;

具體案例:

1. 基本案例

--  代碼
DELIMITER $$
CREATE PROCEDURE test1(IN ss VARCHAR(100))
BEGIN
   SELECT ss ;
END $$
-- 調(diào)用
SET @s1 = '你好' ;
CALL test1(@s1) ;
-- 

2. 帶出參案例

--  代碼

DELIMITER $$
CREATE PROCEDURE testproce(IN score INT,OUT rs VARCHAR(200))
BEGIN
   DECLARE sc INT;
   SET sc = score ;
   IF sc < 0 OR sc > 100 THEN
      SET rs = 'score error';
   ELSEIF sc > 80 THEN
      SET rs = 'A';
   ELSEIF sc > 60 THEN
      SET rs = 'B';
   ELSE
      SET rs = 'C';
   END IF ;
END $$
-- 調(diào)用
SET @a1 =60;
SET @a2 = '';
CALL testproce(@a1,@a2);
SELECT @a2 ;
-- 

3.while的簡(jiǎn)單應(yīng)用

--  代碼

DELIMITER $$
CREATE PROCEDURE proc_add_looply(IN $className VARCHAR(200),INOUT $insertTimes INT)
BEGIN
    WHILE $insertTimes>0 DO
        INSERT INTO classes VALUES(DEFAULT,$className);
        SET $insertTimes = $insertTimes - 1 ;
    END WHILE;
    COMMIT;
END $$
-- 調(diào)用
SET @lp_1 = '班' ;
SET @lp_2 = 5 ;
CALL proc_add_looply(@lp_1,@lp_2);
--

4.用數(shù)據(jù)庫(kù)中的數(shù)據(jù)賦值

--  代碼

DELIMITER $$
CREATE PROCEDURE show_job_dept(IN no2 INT,OUT job2 VARCHAR(100),OUT dno2 INT)
BEGIN
    SELECT job,deptno INTO job2,dno2 FROM emp WHERE EMPNO = no2;
END $$
-- 調(diào)用
SET @sjd_1 = 7369;
SET @sjd_2 = '';
SET @sjd_3 = 0;
CALL show_job_dept(@sjd_1,@sjd_2,@sjd_3);
SELECT @sjd_2 ;
SELECT @sjd_3 ;
--

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

相關(guān)文章

  • mysql索引過(guò)長(zhǎng)Specialed key was too long的解決方法

    mysql索引過(guò)長(zhǎng)Specialed key was too long的解決方法

    在創(chuàng)建要給表的時(shí)候遇到一個(gè)有意思的問(wèn)題,提示Specified key was too long; max key length is 767 bytes,本文就來(lái)介紹一下解決方法,如果你也遇到此類(lèi)問(wèn)題,可以參考一下
    2021-11-11
  • 如何給mysql數(shù)據(jù)庫(kù)重新命名(操作步驟)

    如何給mysql數(shù)據(jù)庫(kù)重新命名(操作步驟)

    這篇文章主要介紹了如何給mysql數(shù)據(jù)庫(kù)重新命名,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • MySQL連接池(Pool)常用方法詳解

    MySQL連接池(Pool)常用方法詳解

    本文詳細(xì)介紹了MySQL連接池的常用方法,包括創(chuàng)建連接池、核心方法連接對(duì)象的方法、連接池管理方法以及事務(wù)處理,同時(shí),還提供了最佳實(shí)踐和性能提示,幫助開(kāi)發(fā)者構(gòu)建高效可靠的數(shù)據(jù)庫(kù)應(yīng)用,需要的朋友可以參考下
    2025-05-05
  • MySQL筆記之修改表的實(shí)現(xiàn)方法

    MySQL筆記之修改表的實(shí)現(xiàn)方法

    我們?cè)趧?chuàng)建表的過(guò)程中難免會(huì)考慮不周,因此后期會(huì)修改表。本篇文章就介紹了在mysql中修改表的實(shí)現(xiàn)方法。需要的朋友參考下
    2013-05-05
  • MySQL如何快速創(chuàng)建800w條測(cè)試數(shù)據(jù)表

    MySQL如何快速創(chuàng)建800w條測(cè)試數(shù)據(jù)表

    這篇文章主要介紹了MySQL如何快速創(chuàng)建800w條測(cè)試數(shù)據(jù)表,下面文章圍繞MySQL創(chuàng)建測(cè)試數(shù)據(jù)表的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,具有一的的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • 用mysqldump備份和恢復(fù)指定表的方法

    用mysqldump備份和恢復(fù)指定表的方法

    用mysqldump備份和恢復(fù)指定表的方法...
    2007-07-07
  • MySQL函數(shù)講解(MySQL函數(shù)大全)

    MySQL函數(shù)講解(MySQL函數(shù)大全)

    MySQL函數(shù)大全和函數(shù)講解,管理MYSQL數(shù)據(jù)一定會(huì)用到
    2013-11-11
  • homeassistant數(shù)據(jù)存儲(chǔ)到mysql數(shù)據(jù)庫(kù)方式

    homeassistant數(shù)據(jù)存儲(chǔ)到mysql數(shù)據(jù)庫(kù)方式

    這篇文章主要介紹了homeassistant數(shù)據(jù)存儲(chǔ)到mysql數(shù)據(jù)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL如何優(yōu)雅的刪除大表實(shí)例詳解

    MySQL如何優(yōu)雅的刪除大表實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL如何優(yōu)雅的刪除大表的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MySQL數(shù)據(jù)庫(kù)通過(guò)Binlog恢復(fù)數(shù)據(jù)的詳細(xì)步驟

    MySQL數(shù)據(jù)庫(kù)通過(guò)Binlog恢復(fù)數(shù)據(jù)的詳細(xì)步驟

    MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數(shù)據(jù)庫(kù)所有的DML操作,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)通過(guò)Binlog恢復(fù)數(shù)據(jù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06

最新評(píng)論

岳西县| 离岛区| 将乐县| 桂林市| 且末县| 三江| 卢湾区| 都江堰市| 昭通市| 泽普县| 沧州市| 寿光市| 胶州市| 华坪县| 福清市| 谷城县| 淮阳县| 宜兴市| 东阳市| 石屏县| 永济市| 奉贤区| 靖宇县| 邮箱| 怀集县| 丰台区| 广南县| 平和县| 革吉县| 成武县| 唐山市| 元阳县| 洪洞县| 嵊州市| 双鸭山市| 曲靖市| 嫩江县| 五华县| 冕宁县| 南郑县| 西乌珠穆沁旗|