您好,登錄后才能下訂單哦!
本文實例講述了mysql存儲過程之創建(CREATE PROCEDURE)和調用(CALL)及變量創建(DECLARE)和賦值(SET)操作方法。分享給大家供大家參考,具體如下:
存儲過程創建(CREATE PROCEDURE)和調用(CALL)
這個咱就不說什么定義啦術語啦啥的,直接看著實例來慢慢熟悉它。完事呢,咱們來創建一個名為GetAllProducts()的簡單存儲過程哈,這個GetAllProducts()存儲過程呢,主要是用來從products表中選擇所有產品。咱們來啟動 mysql 客戶端工具并鍵入以下命令:
DELIMITER // CREATE PROCEDURE GetAllProducts() BEGIN SELECT * FROM products; END // DELIMITER ;
咱們來詳細看下上面的sql哈:
通過上面的sql,咱們就算是創建了一個存儲過程了,完事我們就來調用存儲過程,來看下調用語法:
CALL STORED_PROCEDURE_NAME();
再來看下調用GetAllProducts()存儲過程的具體sql:
CALL GetAllProducts();
運行上面的sql你就會看到你在存儲過程中的sql的運行結果了。
變量創建(DECLARE)和賦值(SET)
我們都知道,變量是一個命名數據對象,變量的值可以在存儲過程執行期間更改。我們接下來就嘗試使用存儲過程中的變量來保存直接/間接結果。 這些變量是存儲過程的本地變量,但是我們得注意,變量必須先聲明后,才能使用它。而我們如果要在存儲過程中聲明一個變量,可以使用DECLARE語句,來看下sql語法:
DECLARE variable_name datatype(size) DEFAULT default_value;
咱們來看下上面的sql具體是什么意思:
咱們接下來就來聲明一個名為total_sale的變量,數據類型為INT,默認值為0。來看下sql:
DECLARE total_sale INT DEFAULT 0;
其中,mysql允許使用單個DECLARE語句聲明共享相同數據類型的兩個或多個變量,來看個sql:
DECLARE x, y INT DEFAULT 0;
在上面的sql中,我們聲明了兩個整數變量x和y,并將其默認值設置為0。完事呢,既然變量設置完了,接下來就該分配值了,我們如果要為變量分配一個值,可以使用SET語句,來看個實例:
DECLARE total_count INT DEFAULT 0; SET total_count = 10;
在上面的sql語句中,我們分配total_count變量的值為10。完事除了SET語句之外,還可以使用SELECT INTO語句將查詢的結果分配給一個變量,來看實例:
DECLARE total_products INT DEFAULT 0 SELECT COUNT(*) INTO total_products FROM products
在上面的sql中,我們應當有如下理解:
我們知道一個變量有自己的范圍(作用域),它用來定義它的生命周期。 但是如果在存儲過程中聲明一個變量,那么當達到存儲過程的END語句時,它將超出范圍,因此在其它代碼塊中無法訪問。
我們可以這么理解,如果我們在BEGIN END塊內聲明一個變量,那么如果達到END,它將超出范圍。 我們還可以在不同的作用域中聲明具有相同名稱的兩個或多個變量,因為變量僅在自己的作用域中有效。 但是,在不同范圍內聲明具有相同名稱的變量不是很好的編程習慣。其中,以@符號開頭的變量是會話變量,直到會話結束前它可用和可訪問。
更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL數據庫鎖相關技巧匯總》
希望本文所述對大家MySQL數據庫計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。