gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

mysql存儲過程的參數類型有哪些

mysql存儲過程的參數類型有三種:1、輸入參數,用“IN”關鍵字標識,可以傳遞給一個存儲過程;2、輸出參數,用“OUT”關鍵字標識,用于存儲過程需要返回一個操作結果的情形;3、輸入輸出參數,用“INOUT”關鍵字標識。

mysql存儲過程的參數類型有哪些

本教程操作環境:windows7系統、mysql8版本、Dell G3電腦。

存儲過程(Stored Procedure):

  一組可編程的函數,是為了完成特定功能的SQL語句集,經編譯創建并保存在數據庫中,用戶可通過指定存儲過程的名字并給定參數(需要時)來調用執行。

優點(為什么要用存儲過程?):

  ①將重復性很高的一些操作,封裝到一個存儲過程中,簡化了對這些SQL的調用

  ②批量處理:SQL+循環,減少流量,也就是“跑批”

  ③統一接口,確保數據的安全

相對于oracle數據庫來說,MySQL的存儲過程相對功能較弱,使用較少。

一、存儲過程的創建和調用

  >存儲過程就是具有名字的一段代碼,用來完成一個特定的功能。

  >創建的存儲過程保存在數據庫的數據字典中。

1、創建存儲過程

CREATE     [DEFINER = { user | CURRENT_USER }]  PROCEDURE sp_name ([proc_parameter[,...]])     [characteristic ...] routine_body  proc_parameter:     [ IN | OUT | INOUT ] param_name type  characteristic:     COMMENT 'string'   | LANGUAGE SQL   | [NOT] DETERMINISTIC   | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }   | SQL SECURITY { DEFINER | INVOKER }  routine_body:   Valid SQL routine statement  [begin_label:] BEGIN   [statement_list]     …… END [end_label]

#創建數據庫,備份數據表用于示例操作

mysql> create database db1; mysql> use db1;     mysql> create table PLAYERS as select * from TENNIS.PLAYERS; mysql> create table MATCHES  as select * from TENNIS.MATCHES;

示例:創建一個存儲過程,刪除給定球員參加的所有比賽

mysql> delimiter $$  #將語句的結束符號從分號;臨時改為兩個$$(可以是自定義) mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)     -> BEGIN     ->   DELETE FROM MATCHES     ->    WHERE playerno = p_playerno;     -> END$$ Query OK, 0 rows affected (0.01 sec)  mysql> delimiter ;  #將語句的結束符號恢復為分號

解析:

  默認情況下,存儲過程和默認數據庫相關聯,如果想指定存儲過程創建在某個特定的數據庫下,那么在過程名前面加數據庫名做前綴;

  在定義過程時,使用DELIMITER $$ 命令將語句的結束符號從分號 ; 臨時改為兩個$$,使得過程體中使用的分號被直接傳遞到服務器,而不會被客戶端(如mysql)解釋。

2、調用存儲過程:call sp_name[(傳參)];

mysql> select * from MATCHES; +---------+--------+----------+-----+------+ | MATCHNO | TEAMNO | PLAYERNO | WON | LOST | +---------+--------+----------+-----+------+ |       1 |      1 |        6 |   3 |    1 | |       7 |      1 |       57 |   3 |    0 | |       8 |      1 |        8 |   0 |    3 | |       9 |      2 |       27 |   3 |    2 | |      11 |      2 |      112 |   2 |    3 | +---------+--------+----------+-----+------+ 5 rows in set (0.00 sec)  mysql> call delete_matches(57); Query OK, 1 row affected (0.03 sec)  mysql> select * from MATCHES; +---------+--------+----------+-----+------+ | MATCHNO | TEAMNO | PLAYERNO | WON | LOST | +---------+--------+----------+-----+------+ |       1 |      1 |        6 |   3 |    1 | |       8 |      1 |        8 |   0 |    3 | |       9 |      2 |       27 |   3 |    2 | |      11 |      2 |      112 |   2 |    3 | +---------+--------+----------+-----+------+ 4 rows in set (0.00 sec)

解析:

  在存儲過程中設置了需要傳參的變量p_playerno,調用存儲過程的時候,通過傳參將57賦值給p_playerno,然后進行存儲過程里的SQL操作。

3、存儲過程體

  >存儲過程體包含了在過程調用時必須執行的語句,例如:dml、ddl語句,if-then-else和while-do語句、聲明變量的declare語句等

  >過程體格式:以begin開始,以end結束(可嵌套)

BEGIN   BEGIN     BEGIN       statements;      END   END END

注意:每個嵌套塊及其中的每條語句,必須以分號結束,表示過程體結束的begin-end塊(又叫做復合語句compound statement),則不需要分號。

4、為語句塊貼標簽

[begin_label:] BEGIN   [statement_list] END [end_label]

例如:

label1: BEGIN   label2: BEGIN     label3: BEGIN       statements;      END label3 ;   END label2; END label1

標簽有兩個作用:

  ①增強代碼的可讀性

  ②在某些語句(例如:leave和iterate語句),需要用到標簽

二、存儲過程的參數

  存儲過程可以有0個或多個參數,用于存儲過程的定義。

MySQL 存儲過程支持三種類型的參數,即輸入參數、輸出參數和輸入/輸出參數,分別用 IN、OUT 和 INOUT 三個關鍵字標識。其中,輸入參數可以傳遞給一個存儲過程,輸出參數用于存儲過程需要返回一個操作結果的情形,而輸入/輸出參數既可以充當輸入參數也可以充當輸出參數。

3種參數類型:

  • IN輸入參數:表示調用者向過程傳入值(傳入值可以是字面量或變量)

  • OUT輸出參數:表示過程向調用者傳出值(可以返回多個值)(傳出值只能是變量)

  • INOUT輸入輸出參數:既表示調用者向過程傳入值,又表示過程向調用者傳出值(值只能是變量)

1、in輸入參數

mysql> delimiter $$ mysql> create procedure in_param(in p_in int)     -> begin     ->   select p_in;     ->   set p_in=2;     ->    select P_in;     -> end$$ mysql> delimiter ;  mysql> set @p_in=1;  mysql> call in_param(@p_in); +------+ | p_in | +------+ |    1 | +------+  +------+ | P_in | +------+ |    2 | +------+  mysql> select @p_in; +-------+ | @p_in | +-------+ |     1 | +-------+ #以上可以看出,p_in在存儲過程中被修改,但并不影響@p_id的值,因為前者為局部變量、后者為全局變量。

2、out輸出參數

mysql> delimiter // mysql> create procedure out_param(out p_out int)     ->   begin     ->     select p_out;     ->     set p_out=2;     ->     select p_out;     ->   end     -> // mysql> delimiter ;  mysql> set @p_out=1;  mysql> call out_param(@p_out); +-------+ | p_out | +-------+ |  NULL | +-------+   #因為out是向調用者輸出參數,不接收輸入的參數,所以存儲過程里的p_out為null +-------+ | p_out | +-------+ |     2 | +-------+  mysql> select @p_out; +--------+ | @p_out | +--------+ |      2 | +--------+   #調用了out_param存儲過程,輸出參數,改變了p_out變量的值

3、inout輸入參數

mysql> delimiter $$ mysql> create procedure inout_param(inout p_inout int)     ->   begin     ->     select p_inout;     ->     set p_inout=2;     ->     select p_inout;     ->   end     -> $$ mysql> delimiter ;  mysql> set @p_inout=1;  mysql> call inout_param(@p_inout); +---------+ | p_inout | +---------+ |       1 | +---------+  +---------+ | p_inout | +---------+ |       2 | +---------+  mysql> select @p_inout; +----------+ | @p_inout | +----------+ |        2 | +----------+ #調用了inout_param存儲過程,接受了輸入的參數,也輸出參數,改變了變量

注意:

  ①如果過程沒有參數,也必須在過程名后面寫上小括號

    例:CREATE PROCEDURE sp_name ([proc_parameter[,…]]) ……

  ②確保參數的名字不等于列的名字,否則在過程體中,參數名被當做列名來處理

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日日鲁鲁鲁夜夜爽爽狠狠视频97| 僵尸世界大战2 在线播放| 蜜臀久久99精品久久久酒店新书| 热久久精品国产| 91蝌蚪视频在线| 青青在线免费观看| 久久婷婷国产91天堂综合精品| xxxx一级片| 中文字幕55页| 狠狠97人人婷婷五月| 国产小视频精品| 国产a级黄色大片| 国产福利视频在线播放| 美女网站视频黄色| www污在线观看| 亚洲一级免费观看| 阿v天堂2018| 在线观看国产中文字幕| 国产精品无码免费专区午夜| 国语对白做受xxxxx在线中国| 国产系列第一页| 国产性xxxx18免费观看视频| 五月天六月丁香| 国产 福利 在线| 午夜视频在线观| 情侣黄网站免费看| 中文字幕在线中文| 日本三级黄色网址| 欧美二区在线视频| 热这里只有精品| xxx国产在线观看| 日韩少妇内射免费播放18禁裸乳| 国产精品无码乱伦| 黄色国产小视频| 波多野结衣乳巨码无在线| 一区中文字幕在线观看| 亚欧在线免费观看| 北条麻妃在线视频观看| 国产a级黄色大片| xxxx在线免费观看| 久久久久久久片| 欧美私人情侣网站| 人人妻人人添人人爽欧美一区| 特色特色大片在线| 国产免费色视频| 国产色视频在线播放| 黄色一级一级片| 91视频最新入口| 欧美不卡在线播放| 欧美黑人在线观看| 又大又硬又爽免费视频| 成人国产在线看| 最新中文字幕久久| 青少年xxxxx性开放hg| 亚洲黄色片免费| 日韩av片免费观看| 女人高潮一级片| 天天久久综合网| 午夜在线视频免费观看| 国产又爽又黄ai换脸| 波多野结衣免费观看| 国内av一区二区| 三日本三级少妇三级99| 中文av一区二区三区| 亚洲精品自拍网| 超碰免费在线公开| 亚洲爆乳无码精品aaa片蜜桃| 狠狠干视频网站| 妞干网在线视频观看| 成年人黄色片视频| 午夜在线观看av| 国产精品久久久久久久99| 黄色网zhan| 国产精品999视频| 日本中文字幕高清| 亚洲一区二区中文字幕在线观看| 国产女人18毛片| 97国产精东麻豆人妻电影| 日本一本二本在线观看| 成人黄色一级大片| www.avtt| 免费观看成人网| 国产又大又长又粗又黄| a在线视频观看| 99视频在线视频| 亚洲激情免费视频| 成人在线观看a| 国产一级免费大片| 日本午夜激情视频| 午夜两性免费视频| 国产日本在线播放| 成 人 黄 色 小说网站 s色| 97av中文字幕| 超碰在线人人爱| 欧美乱做爰xxxⅹ久久久| 91香蕉视频污版| 欧美午夜性视频| 999在线精品视频| 国产真实乱子伦| 成人在线视频一区二区三区| 50路60路老熟妇啪啪| 善良的小姨在线| 欧美大尺度做爰床戏| 精品人妻大屁股白浆无码| 亚洲这里只有精品| 日韩视频第二页| 免费看毛片的网址| 无套内谢丰满少妇中文字幕| 日日摸天天爽天天爽视频| 日本a级片在线观看| 在线黄色免费观看| 无码aⅴ精品一区二区三区浪潮| 亚洲一二三不卡| 在线免费av播放| 热久久精品国产| 亚洲熟妇av日韩熟妇在线| 精品视频在线观看一区二区| 国产欧美一区二| 中文字幕一区二区三区四区在线视频| 无码熟妇人妻av在线电影| 青春草在线视频免费观看| 日本一二区免费| 网站一区二区三区| 91在线视频观看免费| 成熟丰满熟妇高潮xxxxx视频| 青青草视频在线视频| 小泽玛利亚av在线| 精品日韩在线播放| 99999精品| 成人性做爰片免费视频| 亚洲图色中文字幕| 伊人网在线综合| 岛国av在线免费| 极品粉嫩美女露脸啪啪| 中文字幕 日韩 欧美| 亚洲涩涩在线观看| 捷克做爰xxxⅹ性视频| 黄色小视频免费网站| 亚洲欧美日韩综合网| 人人干人人干人人| 五月天婷婷影视| av在线网站免费观看| 国产欧美自拍视频| 无码熟妇人妻av在线电影| 精品久久久久久无码中文野结衣| 很污的网站在线观看| 国产女大学生av| 91淫黄看大片| 欧洲在线免费视频| 成人免费看片'免费看| 我的公把我弄高潮了视频| 免费大片在线观看| 粉色视频免费看| 日本熟妇人妻xxxx| 国产视频在线视频| 欧美一级小视频| 黄页网站大全在线观看| 91看片在线免费观看| 中文字幕在线中文| 青青在线免费观看视频| 91免费视频污| 国产精品无码av在线播放| 在线观看岛国av| 国产自产在线视频| 日韩在线不卡一区| 国产av天堂无码一区二区三区| 欧美伦理视频在线观看| 艳母动漫在线观看| 妺妺窝人体色www在线观看| 日本一级淫片演员| 能看的毛片网站| 日本男女交配视频| 亚洲一区二区三区观看| 日韩国产一级片| 1314成人网| 奇米精品一区二区三区| 日韩av卡一卡二| 无码无遮挡又大又爽又黄的视频| 另类小说第一页| 中国老女人av| 日韩va在线观看| 全黄性性激高免费视频| 精品久久久噜噜噜噜久久图片| 黄色片免费在线观看视频| 成 年 人 黄 色 大 片大 全| 能看的毛片网站| 欧美 日韩 激情| 国产高清精品软男同| 国产午夜大地久久| 911福利视频| 欧美 国产 综合| 欧美性受xxxx黒人xyx性爽| 国产精品无码av在线播放| 玖玖爱视频在线| av7777777| 国产成人免费高清视频| 奇米777在线视频| 九色porny91| 波多野结衣av一区二区全免费观看| 一级黄色录像免费看|