【辮兒哥大白話】到底什麼是Mysql存儲過程? —— 變量篇

本文適合對Mysql有基本基礎的童鞋食用,配合Mysql手冊研究,基礎實踐效果更佳~
個人整理,心得體會,歡迎討論指導.

這同志們在執行一些特殊重複性的sql語句的時候啊,需要頻繁操作一大段的sql文件進行反覆編輯。哥們前一陣就遇到一個某智慧消防設備心跳數據,大概每次操作都需要讀取好多固定的sql進行操作,誒亞這就非常的煩人。這時候有人就說,封個公共類,直接用~!但是這使用太頻繁了也不是個事兒,好幾次sql進進出出磨磨蹭蹭來來回回…(已被和諧),非常耗費數據庫資源。那麼有沒有一種操作,可以針對完成一段特定功能的SQL進行操作,而又集齊的節省資源呢?來來來,辯兒哥帶你瞭解一下Mysql的“語句集”——存儲過程。
在這裏插入圖片描述

一,使用變量的需求

變量的概念在流程控制中是最基礎的知識了吧!(不瞭解的回爐一下子! )假設現在有這樣一個簡單的需求:編寫存儲過程,使用變量獲取 users 表中 id 爲 2 的用戶名。怎麼樣!夠簡單吧!那麼接下來就跟着哥們來實際盤一下:
在存儲過程對於變量的用法依然是採用先聲明後使用的流程,所以先使用 DECLARE 變量名 變量類型(長度) 默認值 的結構來聲明一個變量:
在這裏插入圖片描述
定義一個s_uname變量類型爲字符型,長度限制32位,默認值爲空。之後我們在select語句中使用INTO 可以將查詢到的結果複製給我們定義好的變量。
在這裏插入圖片描述
最後,查詢變量的方式爲 SELECT <變量名> ,查詢賦值好的s_uname變量的值:
在這裏插入圖片描述
運行得出結果:
在這裏插入圖片描述
可以看到基於變量方式獲取用戶名的需求已經完成了,而且輸出的字段名使我們定義好的變量名。OK~基本需求已經完成,這時候假如又新增了一個新的需求:要求在同一個存儲過程中建立一個新的結果集,同時查詢出goods表中id字段值爲1的uname字段的時候,應該怎麼做?咱們繼續往下走。在存儲過程中如果需要生成新的結果集,則需要在其內部增加新的 BEGIN—END 代碼塊,如下:
在這裏插入圖片描述
運行結果可得出:
在這裏插入圖片描述
在這裏插入圖片描述
OK,這樣我們就可以通過兩個結果集來分別對多語句塊內容進行查詢。這個時候又要增加需求!要求在goods表中查詢uname字段爲users表中id爲2的值(此處邏輯有些繞~多屢屢!)這個時候應該怎麼辦?有同學可能就說,那還不簡單啊!代碼塊一中不是都定義好了變量麼!直接拿過來用啊! 於是就得出了以下代碼:
在這裏插入圖片描述
結果在運行保存的時候卻一直在 報錯
在這裏插入圖片描述
這是因爲在存儲過程中,每個變量都有屬於自己的作用範圍。 默認定義的變量作用範圍爲當前代碼塊 ,如果想在多個代碼塊中重複使用同一變量,則需要將變量設置爲全局變量 ,將設置的變量寫在所有內部BEGIN—END的最外層,即可定義爲全局變量:
在這裏插入圖片描述
運行後即可得出正確查詢結果:
在這裏插入圖片描述
在這裏插入圖片描述

二,總結

本篇主要重點爲熟悉存儲過程中變量的概念以及重點的使用,主要功能可概括爲一下三點:
1.代碼塊中的作用範圍只可以在自身代碼中使用。
2.如果要在其他代碼塊中使用該變量需要將其變爲全局變量。
3.將聲明變量放在內部BEGIN-END中的最外層可使其變爲全局變量。

想繼續深入學習的同學可以繼續關注辮兒哥接下來的坑文,不定期無規律看心情咕咕咕佛系更新!個人整理,歡迎批評指導~。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章