成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

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

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號
国内大量揄拍人妻在线视频| 亚洲国产精品高清久久久 | WWW.一区二区三区在线 || 被滋润的娇妻疯狂呻吟| 国产成人无码A区在线观看视频A| GOGO全球高清专业大尺度摄影| 锕锕锕锕锕锕锕好疼JK漫画| 高潮VPSWINDOWS国产乱| 国产无遮挡又黄又爽免费网站| 精品少妇人妻AV无码专区| 蜜芽亚洲AV无码精品国产午夜 | 久别的草原在线影院观看中文| 老奶奶能叫WOMAN吗| 全国主要城市天气预报| 麻花传媒MV一二三区别在哪里看| 欧美性生交XXXXX免费观看| 色欲香天天天综合网站| 亚洲—本道 在线无码AV发| 中国熟妇色XXXXX中国老妇| 吃花核心舌头在里面旋转| 国产欧美精品一区二区三区-老狼| 久久99精品久久久久婷婷暖| 欧美疯狂性受XXXXX另类| 免费播放片高清在线视频| 人妻少妇久久中文字幕一区二区| 欧美精品亚洲精品日韩传电影| 上边一面亲下边一面膜的注意事项| 亚洲AV无码成人精品区国产| 中国CHINESE壮男GⅤ军警| 成人无码区免费AⅤ片黄瓜视频| 国产又色又爽又刺激在线播放| 麻豆AⅤ精品无码一区二区| 色欲蜜臀AV在线播放| 亚洲精品无码一区二区AⅤ污美国| 2019NV天堂香蕉在线观看| 高清成人爽A毛片免费| 久久99亚洲网美利坚合众国| 青梅被从小摸到大H补课1视频| 全部孕妇毛片丰满孕妇孕交| 小受叫床高潮娇喘嗯啊MP3| 中文字幕久久综合伊人| 国产成人无码免费视频麻豆| 久久亚洲精品AB无码播放| 日日摸日日碰夜夜爽暖暖视频| 亚洲精品无码激情AV| 差差漫画页面免费漫画欢迎你| 好男人官网资源在线观看| 欧美人与动人物XXXX9296| 亚洲AAAAA特级| 亚洲色成人网站WWW永久下载| 爱情岛网站亚洲禁18进入 | 妺妺窝人体色聚窝窝www偷窥 | 激情爆乳一区二区三区| 欧洲美女黑人粗性暴交视频| 亚洲AV中文无码乱人伦| 被三个男人绑着躁我好爽| 久草日B视频一二三区| 少妇扒开粉嫩小泬视频| 中文字幕乱人伦高清视频 | 性丰满ⅩXXOOO性HD| AV在线亚洲男人的天堂| 出轨 无码 论坛| 久久人妻AV一区二区软件| 脱色摇床THERMO网站| 99精品国产99久久久久久97| 狠狠色综合久久久久尤物| 日韩综合亚洲色在线影院| 在办公室里揉弄小雪好爽| 国产熟人AV一二三区| 日本VA欧美VA欧美VA精品| 伊在人亚洲香蕉精品区| 国产无遮挡又黄又大又爽| 日本WWW一道久久久免费| 在线观看无码AV网站永久免费| 国产一区二区女内射| 日本亲近相奷中文字幕| 中国少妇内射XXXXⅩHD| 护士被弄到高潮喷水抽搐| 视频一区二区三区免费| AV无码AV高潮AV喷吹免费| 久久精品蜜芽亚洲国产AV| 无码视频一区二区三区在线观看| 边摸边吃奶又黄又激烈视频| 美女扒开内裤无遮挡| 亚洲精品无码AV天堂| 国产精品99久久久久久人| 人妻无码熟妇乱又伦精品视频| 中国东北熟女老太婆内谢| 狠狠躁夜夜躁人人躁婷婷| 无码A∨高潮抽搐流白浆8MAV | 中文无码熟妇人妻AV在线| 狠狠色噜噜狠狠狠7777奇米 | 又黑又肥的60岁岳| 教室停电了校草挺进我体内| 无码午夜福利片在线观看| 播放片高清MV在线观看| 欧美free叉叉叉叉极品少妇| 一区二区AV在线| 精品无码人妻被多人侵犯aⅴ| 无码秘 人妻一区二区三区| 当着全班面被C到高潮哭视频| 欧美人与性囗牲恔配| 中文WWW新版资源在线| 久久久久久精品免费无码| 亚洲精品无码久久久久久小说 | 嗯…啊 摸 湿 奶头免费视频| 热爆料-热门吃瓜-黑料不打烊| 最新亚洲人成网站在线观看| 久久亚洲欧美日本精品| 亚洲欧美日韩愉拍自拍| 护士HD老师FREE性ⅩⅩⅩ| 亚洲AV成人无码一区二区在线观看 | 入禽太深视频免费视频| 暗交小拗女一区二区三区| 欧美性VIDEOS高清精品 | 女女互揉吃奶揉到高潮视频| 中文字幕大香视频蕉| 猫咪WWW免费人成人入口| 在线观看特色大片免费网站| 看全色黄大色大片免费久久| 一区二区三区在线 | 日| 久久久综合亚洲色一区二区三区| 亚洲色大成网站WWW| 精品无码久久久久久久动漫| 亚洲乱码中文论理电影| 大肥女BBWBBWHD视频| 日本适合18岁以上的护肤品| 成年动作片AV免费网站| 日韩精品一区二区三区在线观看| 成人羞羞视频免费网站| 日韩人妻在线一区二区三区| 二三四五六七无产乱码| 上到少妇叫爽TUBE| 国产精品多人P群无码| 小奶瓶(产奶)沈姜| 激情五月色综合国产精品| 亚洲人成人无码www在线观看 | 亚洲熟妇无码A∨| 国产精品久久久久久精品电影| 为了升职丈夫把我献给他们领导 | 无码播放一区二区三区| 国产免费午夜福利蜜芽无码 | 丰满熟妇VIDEOSXXXX| 婷婷色香五月综合激激情| 国产熟女一区二区三区五月婷| 亚洲国产成人久久综合下载| 久久精品丝袜高跟鞋| 中文字字幕乱码视频高清| 欧美乱人伦中文字幕在线| 成人免费看WWW网址入口| 免费人成网WW555KKK在线| ASS鲜嫩鲜嫩PICS日本| 日韩一区二区三区精品| 国产精品久久久久9999赢消| 亚洲AV综合色区无码专区桃色| 久久精品人妻系列无码专区| 18禁止福利午夜体验试看| 人人妻人人澡人人爽人人精品 | 免费无码一区二区三区蜜桃| WWW免费视频在线观看播放| 少妇一晚三次一区二区三区| 国产午夜精品无码| 亚洲综合激情七月婷婷| 欧美性爱操逼大鸡吧| 国产AV妓女影视妓女影院| 亚洲AV永久无码精品天堂动漫| 久久人人爽人人爽人人片AV高清 | 天无日天天射天天视| 黑人又粗又大又 ╳乂| 中国在线观看免费高清完整版| 人妻丰满熟妇A无码区| 国产精品青青在线麻豆| 特级精品毛片免费观看| 妓女院18禁止观看| 91国语对白露脸自产拍不卡| 男吃奶玩乳尖高潮视频午夜| 超碰CAO已满18进入离开| 性色欲情侣网站WWW| 麻豆国产AV超爽剧情系列| 成人无码H免费动漫在线观看| 亚洲AV纯肉无码精品动漫| 蜜桃AV不卡无码三区| 高潮到不停喷水的免费视频| 亚洲欧美综合精品成人网站| 欧美最猛性XXXXX(亚洲精品)| 国产精品免费看久久久无码| 一本无码人妻在中文字幕| 日本少妇高潮喷水XXXXXXX| 国产一区二区女内射| 9999久久久久精品无码| 无码人妻精品一区二区三区不卡| 久久亚洲精品无码AV大香| 成人性生交大片免费看好| 亚洲男人AV天堂午夜在| 人妻美妇疯狂迎合系列视频| 国内精品伊人久久久久AV| 18禁又污又黄又爽的网站| 小12国产萝裸体视频福利| 女人下面被舔视频免费播放电影| 国产女人乱人伦精品一区二区|