日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

CREATE PROCEDURE

系統(tǒng) 1893 0

1 CREATE PROCEDURE(創(chuàng)建)

CREATE PROCEDURE存儲(chǔ)過(guò)程名(參數(shù)列表)

BEGIN

SQL語(yǔ)句代碼塊

END

注意:

由括號(hào)包圍的參數(shù)列必須總是存在。假設(shè)沒(méi)有參數(shù),也該使用一個(gè)空參數(shù)列()。每一個(gè)參數(shù)默認(rèn)都是一個(gè)IN參數(shù)。要指定為其他參數(shù),可在參數(shù)名之前使用關(guān)鍵詞 OUT或INOUT

mysql client定義存儲(chǔ)過(guò)程的時(shí)候使用delimiter命令來(lái)把語(yǔ)句定界符從;變?yōu)?/。

當(dāng)使用delimiter命令時(shí),你應(yīng)該避免使用反斜杠(‘"’)字符,由于那是MySQL的轉(zhuǎn)義字符。

如:

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)

? -> BEGIN

-> SELECT COUNT(*) INTO param1 FROM t;

-> END

-> //

Query OK, 0 rows affected (0.00 sec)

1.2 ALTER PROCEDURE(改動(dòng))

ALTER PROCEDURE存儲(chǔ)過(guò)程名SQL語(yǔ)句代碼塊

這個(gè)語(yǔ)句能夠被用來(lái)改變一個(gè)存儲(chǔ)程序的特征。

1.3 DROP PROCEDURE(刪除)

DROP PROCEDURE IF EXISTS存儲(chǔ)過(guò)程名

eg:DROP PROCEDURE IF EXISTS proc_employee (proc_employee存儲(chǔ)過(guò)程名)

這個(gè)語(yǔ)句被用來(lái)移除一個(gè)存儲(chǔ)程序。不能在一個(gè)存儲(chǔ)過(guò)程中刪除還有一個(gè)存儲(chǔ)過(guò)程,僅僅能調(diào)用還有一個(gè)存儲(chǔ)過(guò)程

1.4 SHOW CREATE PROCEDURE(類似于SHOW CREATE TABLE,查看一個(gè)已存在的存儲(chǔ)過(guò)程)

SHOW CREATE PROCEDURE存儲(chǔ)過(guò)程名

1.5 SHOW PROCEDURE STATUS(列出全部的存儲(chǔ)過(guò)程)

SHOW PROCEDURE STATUS

1.6 CALL語(yǔ)句(存儲(chǔ)過(guò)程的調(diào)用)

CALL存儲(chǔ)過(guò)程名(參數(shù)列表)

CALL語(yǔ)句調(diào)用一個(gè)先前用CREATE PROCEDURE創(chuàng)建的程序。

CALL語(yǔ)句能夠用聲明為OUT或的INOUT參數(shù)的參數(shù)給它的調(diào)用者傳回值。

存儲(chǔ)過(guò)程名稱后面必須加括號(hào),哪怕該存儲(chǔ)過(guò)程沒(méi)有參數(shù)傳遞

1.7 BEGIN ... END(復(fù)合語(yǔ)句)

[ begin_label :]

BEGIN

[ statement_list ]

END

[end_label]

存儲(chǔ)子程序能夠使用BEGIN ... END復(fù)合語(yǔ)句來(lái)包括多個(gè)語(yǔ)句。

statement_list代表一個(gè)或多個(gè)語(yǔ)句的列表。statement_list之內(nèi)每一個(gè)語(yǔ)句都必須用分號(hào)(;)來(lái)結(jié)尾。

復(fù)合語(yǔ)句能夠被標(biāo)記。除非begin_label存在,否則end_label不能被給出,而且假設(shè)二者都存在,他們必須是相同的。

1.8 DECLARE語(yǔ)句(用來(lái)聲明局部變量)

DECLARE語(yǔ)句被用來(lái)把不同項(xiàng)目局域到一個(gè)子程序:局部變量

DECLARE僅被用在BEGIN ... END復(fù)合語(yǔ)句里,而且必須在復(fù)合語(yǔ)句的開(kāi)頭,在不論什么其他語(yǔ)句之前。

1.9 存儲(chǔ)程序中的變量

1.1 DECLARE局部變量

DECLARE var_name[,...] type [DEFAULT value]

這個(gè)語(yǔ)句被用來(lái)聲明局部變量。

要給變量提供一個(gè)默認(rèn)值,請(qǐng)包括一個(gè)DEFAULT子句。

值能夠被指定為一個(gè)表達(dá)式,不須要為一個(gè)常數(shù)。

假設(shè)沒(méi)有DEFAULT子句,初始值為NULL。

局部變量的作用范圍在它被聲明的BEGIN ... END塊內(nèi)。

它能夠被用在嵌套的塊中,除了那些用同樣名字聲明變量的塊。

1.2 變量SET語(yǔ)句

SET var_name = expr [, var_name = expr]

在存儲(chǔ)程序中的SET語(yǔ)句是一般SET語(yǔ)句的擴(kuò)展版本號(hào)。

被參考變量可能是子程序內(nèi)聲明的變量,或者是全局server變量。

在存儲(chǔ)程序中的SET語(yǔ)句作為預(yù)先存在的SET語(yǔ)法的一部分來(lái)實(shí)現(xiàn)。這同意SET a=x, b=y, ...這種擴(kuò)展語(yǔ)法。

當(dāng)中不同的變量類型(局域聲明變量及全局和集體變量)能夠被混合起來(lái)。

這也同意把局部變量和一些僅僅對(duì)系統(tǒng)變量有意義的選項(xiàng)合并起來(lái)。

1.3 SELECT ... INTO語(yǔ)句

SELECT col_name[,...] INTO var_name[,...] table_expr

這個(gè)SELECT語(yǔ)法把選定的列直接存儲(chǔ)到變量。

因此,僅僅有單一的行能夠被取回。

SELECT id,data INTO x,y FROM test.t1 LIMIT 1;

注意,用戶變量名在MySQL 5.1中是對(duì)大寫和小寫不敏感的。

重要 : SQL變量名不能和列名一樣。假設(shè)SELECT ... INTO這種SQL語(yǔ)句包括一個(gè)對(duì)列的參考,并包括一個(gè)與列同樣名字的局部變量,MySQL當(dāng)前把參考解釋為一個(gè)變量的名字。

1.10 MySQL存儲(chǔ)過(guò)程參數(shù)類型(in、out、inout)

此小節(jié)內(nèi)容來(lái)自:

參見(jiàn)地址:http://www.blogjava.net/nonels/archive/2009/04/22/233324.html

MySQL存儲(chǔ)過(guò)程參數(shù)(in)

MySQL存儲(chǔ)過(guò)程 “in”參數(shù):跟 C語(yǔ)言的函數(shù)參數(shù)的值傳遞類似, MySQL存儲(chǔ)過(guò)程內(nèi)部可能會(huì)改動(dòng)此參數(shù),但對(duì) in類型參數(shù)的改動(dòng),對(duì)調(diào)用者(caller)來(lái)說(shuō)是不可見(jiàn)的(not visible)。

MySQL存儲(chǔ)過(guò)程參數(shù)(out)

MySQL存儲(chǔ)過(guò)程 “out”參數(shù):從存儲(chǔ)過(guò)程內(nèi)部傳值給調(diào)用者。在存儲(chǔ)過(guò)程內(nèi)部,該參數(shù)初始值為 null,不管調(diào)用者是否給存儲(chǔ)過(guò)程參數(shù)設(shè)置值

MySQL存儲(chǔ)過(guò)程參數(shù)(inout)

MySQL存儲(chǔ)過(guò)程 inout參數(shù)跟 out類似,都能夠從存儲(chǔ)過(guò)程內(nèi)部傳值給調(diào)用者。不同的是:調(diào)用者還能夠通過(guò) inout參數(shù)傳遞值給存儲(chǔ)過(guò)程。

總結(jié)

假設(shè)只想把數(shù)據(jù)傳給 MySQL存儲(chǔ)過(guò)程,那就使用“in”類型參數(shù);假設(shè)只從 MySQL存儲(chǔ)過(guò)程返回值,那就使用“out”類型參數(shù);假設(shè)須要把數(shù)據(jù)傳給 MySQL存儲(chǔ)過(guò)程,還要經(jīng)過(guò)一些計(jì)算后再傳回給我們,此時(shí),要使用“inout”類型參數(shù)。

1.11 樣例:

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

帶(輸出參數(shù))返回值的存儲(chǔ)過(guò)程:

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

DROP PROCEDURE IF EXISTS proc_employee_getCount

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

CREATE PROCEDURE proc_employee_getCount(out n int)

BEGIN

SELECT COUNT(*) FROM employee ;

END

--MYSQL調(diào)用存儲(chǔ)過(guò)程

CALL proc_employee_getCount(@n);

帶輸入?yún)?shù)的存儲(chǔ)過(guò)程:

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

DROP PROCEDURE IF EXISTS proc_employee_findById;

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

CREATE PROCEDURE proc_employee_findById(in n int)

BEGIN

SELECT * FROM employee where id=n;

END

--定義變量

SET @n=1;

--調(diào)用存儲(chǔ)過(guò)程

CALL proc_employee_findById(@n);

操作存儲(chǔ)過(guò)程時(shí)應(yīng)注意:

1. 刪除存儲(chǔ)過(guò)程時(shí)僅僅須要指定存儲(chǔ)過(guò)程名就可以,不帶括號(hào);

2. 創(chuàng)建存儲(chǔ)過(guò)程時(shí),無(wú)論該存儲(chǔ)過(guò)程有無(wú)參數(shù),都須要帶括號(hào);

3. 在使用SET定義變量時(shí)應(yīng)遵循SET的語(yǔ)法規(guī)則;

SET @變量名=初始值;

4. 在定義存儲(chǔ)過(guò)程參數(shù)列表時(shí),應(yīng)注意參數(shù)名與數(shù)據(jù)庫(kù)中字段名差別開(kāi)來(lái),否則將出現(xiàn)無(wú)法預(yù)期的結(jié)果

CREATE PROCEDURE


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 伊宁县| 隆德县| 盐城市| 岑溪市| 福建省| 偃师市| 个旧市| 闽清县| 齐齐哈尔市| 和林格尔县| 大名县| 彭阳县| 武义县| 同仁县| 隆子县| 西华县| 达尔| 松桃| 萝北县| 开封县| 沈阳市| 福州市| 甘南县| 浦江县| 方山县| 宁武县| 抚顺县| 阜城县| 桦南县| 靖宇县| 丰镇市| 新巴尔虎右旗| 旬邑县| 外汇| 亚东县| 上杭县| 连山| 确山县| 正宁县| 宜都市| 白河县|