首頁  >  文章  >  資料庫  >  什麼是mysql預存程序

什麼是mysql預存程序

清浅
清浅原創
2019-03-29 14:48:034351瀏覽

MySQL中的預存程序指的是儲存在資料庫中的SQL語句集合,當建立好預存程序後在執行時提供所需參數,預存程序就可以以程式碼指定的方式使用參數執行並傳回值

在MySQL中提供了建立預存程序的能力。預存程序是MySQL以及其他資料庫管理系統中的強大功能。接下來在文章中將為大家具體介紹MySQL中的預存過程,具有一定的參考作用,希望對大家有幫助。

什麼是mysql預存程序

【推薦課程:MySQL教學

## 預存程序:

預存程序指的是儲存在資料庫中的SQL語句的集合。預存程序它可以包含業務邏輯,這是區分預存程序和視圖的關鍵之一。另外預存程序還可以接受參數,我們可以在預存過程中設定變量,寫入語句等。

預存程序如何運作

首先要先建立一個預存程序然後再執行。在運行的過程中需要提供它所需要的參數,然後預存程序將以程式碼指定的任何方式使用參數執行。例如,編寫一個接受FruitId參數的預存程序。然後在儲存過程中可以獲得該參數並使用它來檢查該特定水果的庫存。因此我們可以調用存儲過程,即每次使用不同的水果ID它都將返回一個值,並顯示該庫存中有多少水果。

建立預存程序

我們可以透過CREATE PROCEDURE語句建立預存程序

CREATE PROCEDURE demo_name(p_1 INT)
BEGIN
  ...code goes here...
END;

demo_name指的是預存程序的名稱,括號是必須的,如果裡面不包含任何參數則括號可以為空

預存程序的主體是介於BEGIN和END關鍵字之間。這些關鍵字用於編寫複合語句。複合語句可以包含多個語句,如果需要,可以嵌套這些語句。

範例:建立一個預存程序名為FruitStock:

DELIMITER //

CREATE PROCEDURE FruitStock(thisFruit SMALLINT)
BEGIN
	SELECT 
		Fruit.FruitName, 
		Fruit.Inventory, 
		Units.UnitName
	FROM 
		Fruit INNER JOIN Units ON
		Fruit.UnitId = Units.UnitId
	WHERE 
		Fruit.FruitId = thisFruit;
END //

DELIMITER ;

建立好了一個儲存過程,接下來將呼叫這個預存程序

呼叫一個參數為1的ID

CALL FruitStock(1);

刪除預存程序

可以使用DROP PROCEDURE語句刪除預存程序。

DROP PROCEDURE FruitStock;

改變預存程序

可透過下列語句更改預存程序ALTER PROCEDURE。

需要注意要變更預存程序的主體或其任何參數時,需要刪除該程序然後再次建立

#範例:新增Fruit.FruitId所要傳回的清單

DROP PROCEDURE IF EXISTS FruitStock;
DELIMITER //
CREATE PROCEDURE FruitStock(thisFruit SMALLINT)
BEGIN
	SELECT 
		Fruit.FruitId, 
		Fruit.FruitName, 
		Fruit.Inventory, 
		Units.UnitName
	FROM 
		Fruit INNER JOIN Units ON
		Fruit.UnitId = Units.UnitId
	WHERE 
		Fruit.FruitId = thisFruit;
END //

DELIMITER ;

總結:以上就是本篇文章的全部內容了,希望對大家有幫助。

以上是什麼是mysql預存程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn