亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

CREATE PROCEDURE

系統 1620 0

1 CREATE PROCEDURE(創建)

CREATE PROCEDURE存儲過程名(參數列表)

BEGIN

SQL語句代碼塊

END

注意:

由括號包圍的參數列必須總是存在。假設沒有參數,也該使用一個空參數列()。每一個參數默認都是一個IN參數。要指定為其他參數,可在參數名之前使用關鍵詞 OUT或INOUT

mysql client定義存儲過程的時候使用delimiter命令來把語句定界符從;變為//。

當使用delimiter命令時,你應該避免使用反斜杠(‘"’)字符,由于那是MySQL的轉義字符。

如:

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(改動)

ALTER PROCEDURE存儲過程名SQL語句代碼塊

這個語句能夠被用來改變一個存儲程序的特征。

1.3 DROP PROCEDURE(刪除)

DROP PROCEDURE IF EXISTS存儲過程名

eg:DROP PROCEDURE IF EXISTS proc_employee (proc_employee存儲過程名)

這個語句被用來移除一個存儲程序。不能在一個存儲過程中刪除還有一個存儲過程,僅僅能調用還有一個存儲過程

1.4 SHOW CREATE PROCEDURE(類似于SHOW CREATE TABLE,查看一個已存在的存儲過程)

SHOW CREATE PROCEDURE存儲過程名

1.5 SHOW PROCEDURE STATUS(列出全部的存儲過程)

SHOW PROCEDURE STATUS

1.6 CALL語句(存儲過程的調用)

CALL存儲過程名(參數列表)

CALL語句調用一個先前用CREATE PROCEDURE創建的程序。

CALL語句能夠用聲明為OUT或的INOUT參數的參數給它的調用者傳回值。

存儲過程名稱后面必須加括號,哪怕該存儲過程沒有參數傳遞

1.7 BEGIN ... END(復合語句)

[ begin_label :]

BEGIN

[ statement_list ]

END

[end_label]

存儲子程序能夠使用BEGIN ... END復合語句來包括多個語句。

statement_list代表一個或多個語句的列表。statement_list之內每一個語句都必須用分號(;)來結尾。

復合語句能夠被標記。除非begin_label存在,否則end_label不能被給出,而且假設二者都存在,他們必須是相同的。

1.8 DECLARE語句(用來聲明局部變量)

DECLARE語句被用來把不同項目局域到一個子程序:局部變量

DECLARE僅被用在BEGIN ... END復合語句里,而且必須在復合語句的開頭,在不論什么其他語句之前。

1.9 存儲程序中的變量

1.1 DECLARE局部變量

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

這個語句被用來聲明局部變量。

要給變量提供一個默認值,請包括一個DEFAULT子句。

值能夠被指定為一個表達式,不須要為一個常數。

假設沒有DEFAULT子句,初始值為NULL。

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

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

1.2 變量SET語句

SET var_name = expr [, var_name = expr]

在存儲程序中的SET語句是一般SET語句的擴展版本號。

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

在存儲程序中的SET語句作為預先存在的SET語法的一部分來實現。這同意SET a=x, b=y, ...這種擴展語法。

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

這也同意把局部變量和一些僅僅對系統變量有意義的選項合并起來。

1.3 SELECT ... INTO語句

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

這個SELECT語法把選定的列直接存儲到變量。

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

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

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

重要 : SQL變量名不能和列名一樣。假設SELECT ... INTO這種SQL語句包括一個對列的參考,并包括一個與列同樣名字的局部變量,MySQL當前把參考解釋為一個變量的名字。

1.10 MySQL存儲過程參數類型(in、out、inout)

此小節內容來自:

參見地址:http://www.blogjava.net/nonels/archive/2009/04/22/233324.html

MySQL存儲過程參數(in)

MySQL存儲過程 “in”參數:跟 C語言的函數參數的值傳遞類似, MySQL存儲過程內部可能會改動此參數,但對 in類型參數的改動,對調用者(caller)來說是不可見的(not visible)。

MySQL存儲過程參數(out)

MySQL存儲過程 “out”參數:從存儲過程內部傳值給調用者。在存儲過程內部,該參數初始值為 null,不管調用者是否給存儲過程參數設置值

MySQL存儲過程參數(inout)

MySQL存儲過程 inout參數跟 out類似,都能夠從存儲過程內部傳值給調用者。不同的是:調用者還能夠通過 inout參數傳遞值給存儲過程。

總結

假設只想把數據傳給 MySQL存儲過程,那就使用“in”類型參數;假設只從 MySQL存儲過程返回值,那就使用“out”類型參數;假設須要把數據傳給 MySQL存儲過程,還要經過一些計算后再傳回給我們,此時,要使用“inout”類型參數。

1.11 樣例:

1.1 創建存儲過程

帶(輸出參數)返回值的存儲過程:

--刪除存儲過程

DROP PROCEDURE IF EXISTS proc_employee_getCount

--創建存儲過程

CREATE PROCEDURE proc_employee_getCount(out n int)

BEGIN

SELECT COUNT(*) FROM employee ;

END

--MYSQL調用存儲過程

CALL proc_employee_getCount(@n);

帶輸入參數的存儲過程:

--刪除存儲過程

DROP PROCEDURE IF EXISTS proc_employee_findById;

--創建存儲過程

CREATE PROCEDURE proc_employee_findById(in n int)

BEGIN

SELECT * FROM employee where id=n;

END

--定義變量

SET @n=1;

--調用存儲過程

CALL proc_employee_findById(@n);

操作存儲過程時應注意:

1. 刪除存儲過程時僅僅須要指定存儲過程名就可以,不帶括號;

2. 創建存儲過程時,無論該存儲過程有無參數,都須要帶括號;

3. 在使用SET定義變量時應遵循SET的語法規則;

SET @變量名=初始值;

4. 在定義存儲過程參數列表時,應注意參數名與數據庫中字段名差別開來,否則將出現無法預期的結果

CREATE PROCEDURE


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产午夜精品一区二区三区 | 中文字幕视频在线观看 | 99久久精品自在自看国产 | 精品国产一区二区 | 日本aⅴ在线不卡免费观看 日本aaaa | 久久国产精品久久久久久久久久 | 麻豆精品永久免费视频 | 欧美在线视频免费看 | 99在线小视频 | 成人黄色一级片 | 一级白嫩美女毛片免费 | 国产欧美另类性视频 | 欧美香蕉视频 | 亚洲精品综合在线 | 青青青爽在线视频观看 | 成人免费观看视频久爱网 | 久久精品一区二区三区不卡牛牛 | 久久久国产乱子伦精品 | 久久成人国产精品二三区 | 久久久久久久国产精品毛片 | 欧美手机看片 | 青青青在线观看免费视频精品 | 国产成人免费在线视频 | 日韩孕交japanese孕交 | 免费人成网站在线高清 | 亚洲精品第四页中文字幕 | 一级做性色a爱片久久片 | 亚洲综合免费 | 四虎影视成人精品 | 国产日韩欧美综合一区二区三区 | 亚洲国产精品悠悠久久琪琪 | 一区精品在线 | 国产精品一区三区 | 嫩草社区| 亚洲国产欧美91 | 欧美大片毛片大片 | 一级毛片免费播放 | 国产精品高清在线观看地址 | 中文字幕精品视频在线观看 | 一级大片免费观看 | 欧美一区二区三区成人看不卡 |