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

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精品网 | 在线亚洲国产精品区 | 四虎在线影视在线影库 | 人人爽天天碰天天躁夜夜躁 | 亚洲国产高清人在线 | 伊人久久精品一区二区三区 | 九九在线精品视频播放 | 亚洲乱码一区二区三区在线观看 | 动漫美女撒尿 | 老司机午夜免费视频 | 男人的天堂在线免费视频 | 99er久久 | 色鬼久久爱综合久久鬼色 | 四虎家庭影院 | 天天射网 | 日本不卡免免费观看 | 日韩毛片最新看 | 四虎精品 | 波多野结衣在线一区二区 | 国产夫妻久久线观看 | 色妞ww精品视频7777 | 自拍中文字幕 | 伊人久久一本 | 久久国产成人亚洲精品影院老金 | 99热热久久这里只有精品166 | 日韩高清在线二区 | 精品国产乱码一区二区三区麻豆 | 欧美999| 亚洲毛片一级带毛片基地 | 91精品国产三级在线观看 | 成人精品一区二区www | 看免费5xxaaa毛片30厘米 | 毛茸茸bbw亚洲人 | 曰本女人一级毛片看一级毛 | 爆操波多野结衣 | 夜夜撸天天操 | 国产亚洲欧洲国产综合一区 | 亚洲国产日韩在线一区 | 亚洲偷自拍另类图片二区 | 黄视频在线观看网站 |