溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql存儲(chǔ)過(guò)程具體是怎么樣的

發(fā)布時(shí)間:2020-05-26 15:00:08 來(lái)源:PHP中文網(wǎng) 閱讀:297 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

本文主要給大家簡(jiǎn)單講講mysql存儲(chǔ)過(guò)程具體是怎么樣的,相關(guān)專業(yè)術(shù)語(yǔ)大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望mysql存儲(chǔ)過(guò)程具體是怎么樣的這篇文章可以給大家?guī)?lái)一些實(shí)際幫助。                                                            

mysql存儲(chǔ)過(guò)程具體是怎么樣的

存儲(chǔ)過(guò)程:

存儲(chǔ)過(guò)程指的是存儲(chǔ)在數(shù)據(jù)庫(kù)中的SQL語(yǔ)句的集合。存儲(chǔ)過(guò)程它可以包含業(yè)務(wù)邏輯,這是區(qū)分存儲(chǔ)過(guò)程和視圖的關(guān)鍵之一。另外存儲(chǔ)過(guò)程還可以接受參數(shù),我們可以在存儲(chǔ)過(guò)程中設(shè)置變量,寫入語(yǔ)句等。

存儲(chǔ)過(guò)程如何工作

首先要先創(chuàng)建一個(gè)存儲(chǔ)過(guò)程然后再運(yùn)行。在運(yùn)行的過(guò)程中需要提供它所需要的參數(shù),然后存儲(chǔ)過(guò)程將以代碼指定的任何方式使用參數(shù)執(zhí)行。例如,編寫一個(gè)接受FruitId參數(shù)的存儲(chǔ)過(guò)程。然后在存儲(chǔ)過(guò)程可以獲取該參數(shù)并使用它來(lái)檢查該特定水果的庫(kù)存。因此我們可以調(diào)用存儲(chǔ)過(guò)程,即每次使用不同的水果ID它都將返回一個(gè)值,并顯示該庫(kù)存中有多少水果。

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

我們可以通過(guò)CREATE PROCEDURE語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程

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

demo_name指的是存儲(chǔ)過(guò)程的名稱,括號(hào)是必須的,如果里面不包含任何參數(shù)則括號(hào)可以為空

存儲(chǔ)過(guò)程的主體是介于BEGIN和END關(guān)鍵字之間。這些關(guān)鍵字用于編寫復(fù)合語(yǔ)句。復(fù)合語(yǔ)句可以包含多個(gè)語(yǔ)句,如果需要,可以嵌套這些語(yǔ)句。

例:創(chuàng)建一個(gè)存儲(chǔ)過(guò)程名為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 ;

創(chuàng)建好了一個(gè)存儲(chǔ)過(guò)程,接下來(lái)將調(diào)用這個(gè)存儲(chǔ)過(guò)程

調(diào)用一個(gè)參數(shù)為1的ID

CALL FruitStock(1);

刪除存儲(chǔ)過(guò)程

可以使用DROP PROCEDURE語(yǔ)句刪除存儲(chǔ)過(guò)程。

DROP PROCEDURE FruitStock;

改變存儲(chǔ)過(guò)程

在存儲(chǔ)過(guò)程中可通過(guò)下列語(yǔ)句更改存儲(chǔ)過(guò)程ALTER PROCEDURE。

需要注意要更改存儲(chǔ)過(guò)程的主體或其任何參數(shù)時(shí),需要?jiǎng)h除該過(guò)程然后再次創(chuàng)建

例:添加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存儲(chǔ)過(guò)程具體是怎么樣的就先給大家講到這里,對(duì)于其它相關(guān)問(wèn)題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI