日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
MySQL創(chuàng)建存儲(chǔ)過(guò)程(CREATE PROCEDURE)
mysql 存儲(chǔ)過(guò)程是一些 SQL 語(yǔ)句的集合,比如有時(shí)候我們可能需要一大串的 SQL 語(yǔ)句,或者說(shuō)在編寫 SQL 語(yǔ)句的過(guò)程中需要設(shè)置一些變量的值,這個(gè)時(shí)候我們就完全有必要編寫一個(gè)存儲(chǔ)過(guò)程。

創(chuàng)新互聯(lián)主營(yíng)海城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開(kāi)發(fā),海城h5重慶小程序開(kāi)發(fā)搭建,海城網(wǎng)站營(yíng)銷推廣歡迎海城等地區(qū)企業(yè)咨詢

編寫存儲(chǔ)過(guò)程并不是件簡(jiǎn)單的事情,但是使用存儲(chǔ)過(guò)程可以簡(jiǎn)化操作,且減少冗余的操作步驟,同時(shí),還可以減少操作過(guò)程中的失誤,提高效率,因此應(yīng)該盡可能的學(xué)會(huì)使用存儲(chǔ)過(guò)程。

下面主要介紹如何創(chuàng)建存儲(chǔ)過(guò)程。

可以使用
CREATE PROCEDURE 語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程,語(yǔ)法格式如下:

CREATE PROCEDURE <過(guò)程名> ( [過(guò)程參數(shù)[,…] ] ) <過(guò)程體>
[過(guò)程參數(shù)[,…] ] 格式
[ IN | OUT | INOUT ] <參數(shù)名> <類型>

語(yǔ)法說(shuō)明如下:

1) 過(guò)程名

存儲(chǔ)過(guò)程的名稱,默認(rèn)在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建。若需要在特定數(shù)據(jù)庫(kù)中創(chuàng)建存儲(chǔ)過(guò)程,則要在名稱前面加上數(shù)據(jù)庫(kù)的名稱,即 db_name.sp_name。

需要注意的是,名稱應(yīng)當(dāng)盡量避免選取與 MySQL 內(nèi)置函數(shù)相同的名稱,否則會(huì)發(fā)生錯(cuò)誤。

2) 過(guò)程參數(shù)

存儲(chǔ)過(guò)程的參數(shù)列表。其中,
<參數(shù)名>為參數(shù)名,
<類型>為參數(shù)的類型(可以是任何有效的 MySQL 數(shù)據(jù)類型)。當(dāng)有多個(gè)參數(shù)時(shí),參數(shù)列表中彼此間用逗號(hào)分隔。存儲(chǔ)過(guò)程可以沒(méi)有參數(shù)(此時(shí)存儲(chǔ)過(guò)程的名稱后仍需加上一對(duì)括號(hào)),也可以有 1 個(gè)或多個(gè)參數(shù)。

MySQL 存儲(chǔ)過(guò)程支持三種類型的參數(shù),即輸入?yún)?shù)、輸出參數(shù)和輸入/輸出參數(shù),分別用 IN、OUT 和 INOUT 三個(gè)關(guān)鍵字標(biāo)識(shí)。其中,輸入?yún)?shù)可以傳遞給一個(gè)存儲(chǔ)過(guò)程,輸出參數(shù)用于存儲(chǔ)過(guò)程需要返回一個(gè)操作結(jié)果的情形,而輸入/輸出參數(shù)既可以充當(dāng)輸入?yún)?shù)也可以充當(dāng)輸出參數(shù)。

需要注意的是,參數(shù)的取名不要與數(shù)據(jù)表的列名相同,否則盡管不會(huì)返回出錯(cuò)信息,但是存儲(chǔ)過(guò)程的 SQL 語(yǔ)句會(huì)將參數(shù)名看作列名,從而引發(fā)不可預(yù)知的結(jié)果。

3) 過(guò)程體

存儲(chǔ)過(guò)程的主體部分,也稱為存儲(chǔ)過(guò)程體,包含在過(guò)程調(diào)用的時(shí)候必須執(zhí)行的 SQL 語(yǔ)句。這個(gè)部分以關(guān)鍵字
BEGIN 開(kāi)始,以關(guān)鍵字
END結(jié)束。若存儲(chǔ)過(guò)程體中只有一條 SQL 語(yǔ)句,則可以省略 BEGIN-END 標(biāo)志。

在存儲(chǔ)過(guò)程的創(chuàng)建中,經(jīng)常會(huì)用到一個(gè)十分重要的 MySQL 命令,即 DELIMITER 命令,特別是對(duì)于通過(guò)命令行的方式來(lái)操作 MySQL 數(shù)據(jù)庫(kù)的使用者,更是要學(xué)會(huì)使用該命令。

在 MySQL 中,服務(wù)器處理 SQL 語(yǔ)句默認(rèn)是以分號(hào)作為語(yǔ)句結(jié)束標(biāo)志的。然而,在創(chuàng)建存儲(chǔ)過(guò)程時(shí),存儲(chǔ)過(guò)程體可能包含有多條 SQL 語(yǔ)句,這些 SQL 語(yǔ)句如果仍以分號(hào)作為語(yǔ)句結(jié)束符,那么 MySQL 服務(wù)器在處理時(shí)會(huì)以遇到的第一條 SQL 語(yǔ)句結(jié)尾處的分號(hào)作為整個(gè)程序的結(jié)束符,而不再去處理存儲(chǔ)過(guò)程體中后面的 SQL 語(yǔ)句,這樣顯然不行。

為解決以上問(wèn)題,通常使用
DELIMITER 命令將結(jié)束命令修改為其他字符。語(yǔ)法格式如下:

DELIMITER $$

語(yǔ)法說(shuō)明如下:

  • $$ 是用戶定義的結(jié)束符,通常這個(gè)符號(hào)可以是一些特殊的符號(hào),如兩個(gè)“?”或兩個(gè)“¥”等。
  • 當(dāng)使用 DELIMITER 命令時(shí),應(yīng)該避免使用反斜杠“\”字符,因?yàn)樗?MySQL 的轉(zhuǎn)義字符。

在 MySQL 命令行客戶端輸入如下 SQL 語(yǔ)句。

mysql > DELIMITER ??

成功執(zhí)行這條 SQL 語(yǔ)句后,任何命令、語(yǔ)句或程序的結(jié)束標(biāo)志就換為兩個(gè)問(wèn)號(hào)“??”了。

若希望換回默認(rèn)的分號(hào)“;”作為結(jié)束標(biāo)志,則在 MySQL 命令行客戶端輸入下列語(yǔ)句即可:

mysql > DELIMITER ;

注意:
DELIMITER 和分號(hào)“;”之間一定要有一個(gè)空格。在創(chuàng)建存儲(chǔ)過(guò)程時(shí),必須具有 CREATE ROUTINE 權(quán)限。

例 1

創(chuàng)建名稱為 ShowStuScore 的存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程的作用是從學(xué)生成績(jī)信息表中查詢學(xué)生的成績(jī)信息,輸入的 SQL 語(yǔ)句和執(zhí)行過(guò)程如下所示。

mysql> DELIMITER //
mysql> CREATE PROCEDURE ShowStuScore()
    -> BEGIN
    -> SELECT * FROM tb_students_score;
    -> END //
Query OK, 0 rows affected (0.09 sec)

結(jié)果顯示 ShowStuScore 存儲(chǔ)過(guò)程已經(jīng)創(chuàng)建成功。

例 2

創(chuàng)建名稱為 GetScoreByStu 的存儲(chǔ)過(guò)程,輸入?yún)?shù)是學(xué)生姓名。存儲(chǔ)過(guò)程的作用是通過(guò)輸入的學(xué)生姓名從學(xué)生成績(jī)信息表中查詢指定學(xué)生的成績(jī)信息,輸入的 SQL 語(yǔ)句和執(zhí)行過(guò)程如下所示。

mysql> DELIMITER //
mysql> CREATE PROCEDURE GetScoreByStu
    -> (IN name VARCHAR(30))
    -> BEGIN
    -> SELECT student_score FROM tb_students_score
    -> WHERE student_name=name;
    -> END //
Query OK, 0 rows affected (0.01 sec)

網(wǎng)站欄目:MySQL創(chuàng)建存儲(chǔ)過(guò)程(CREATE PROCEDURE)
文章起源:http://www.5511xx.com/article/coopgjj.html