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一区二区
黄大色黄女片18第一次| 视频在线观看免费高清| 国产视频一区二区三区在线播放 | 日本激情视频在线| 中文字幕免费高| 99久久激情视频| 国产免费内射又粗又爽密桃视频| 国产嫩草在线观看| av女优在线播放| 九九九九九九九九| 污污网站免费看| 国产视频九色蝌蚪| 手机看片日韩国产| 红桃视频 国产| 做a视频在线观看| 免费看国产黄色片| 国产精品亚洲a| 草草视频在线免费观看| 一级黄色免费在线观看| 91免费视频污| 男女污污视频网站| 两性午夜免费视频| 色悠悠久久综合网| 久久综合久久色| 北条麻妃视频在线| 日韩免费高清在线| 欧美激情成人网| 国产日本在线播放| 亚洲欧洲日本精品| koreanbj精品视频一区| 亚洲AV无码成人精品一区| 亚洲国产高清av| 久久婷婷国产精品| 国产精品裸体瑜伽视频| 美女在线视频一区二区| 青青草精品视频在线| av电影一区二区三区| 毛片毛片毛片毛片毛| 91手机视频在线| 欧美 国产 精品| www国产免费| 成人性做爰片免费视频| 奇米777在线| 五月天激情图片| 69精品丰满人妻无码视频a片| 欧美综合在线播放| 自拍偷拍 国产| 欧美亚洲黄色片| 久久久久久免费看| 成年人网站国产| 国产在线青青草| 国产 porn| 天天干天天操天天干天天操| 中文字幕12页| 成人短视频在线观看免费| 老太脱裤让老头玩ⅹxxxx| 欧美久久久久久久久久久久久| 国产h视频在线播放| 亚洲精品怡红院| 国产欧美久久久久| 97公开免费视频| 国产玉足脚交久久欧美| 精品久久久久久久无码| 国产毛片久久久久久国产毛片| 久久久久久久久久久视频| 奇米777在线视频| 国产精品无码专区av在线播放| 波多野结衣激情| 91av俱乐部| www日韩视频| 激情五月开心婷婷| 日韩人妻精品无码一区二区三区| 亚洲综合在线一区二区| 日本在线观看免费视频| av免费网站观看| www.色就是色| www.cao超碰| 四虎免费在线观看视频| av中文字幕av| www污在线观看| 九九九九免费视频| 成年人视频网站免费观看| 激情六月丁香婷婷| 五月天激情视频在线观看| 免费黄色特级片| 91淫黄看大片| 三上悠亚免费在线观看| 久久无码高潮喷水| 欧美黄色免费影院| 天天天干夜夜夜操| 亚洲 自拍 另类小说综合图区| 成人毛片100部免费看| 色婷婷综合网站| 精品一卡二卡三卡| 久久成人免费观看| 人妻av中文系列| 国产免费黄色av| 黄色片视频在线免费观看| 美女日批免费视频| 男人天堂网视频| 韩国日本美国免费毛片| 久久午夜夜伦鲁鲁一区二区| 韩国一区二区av| 色婷婷综合网站| 91视频这里只有精品| 亚洲va在线va天堂va偷拍| 肉色超薄丝袜脚交| 大陆极品少妇内射aaaaaa| 成年丰满熟妇午夜免费视频 | 欧美日韩亚洲国产成人| 成年丰满熟妇午夜免费视频 | 欧美交换配乱吟粗大25p| 久久99久久久久久| 任你操这里只有精品| 午夜视频在线网站| 少妇一晚三次一区二区三区| 免费av手机在线观看| 无码日韩人妻精品久久蜜桃| 蜜桃免费在线视频| www.-级毛片线天内射视视| 欧美大黑帍在线播放| 久久久噜噜噜www成人网| 欧美激情第一区| www.av蜜桃| 国产又粗又长又大的视频| 日本xxxxx18| 白嫩少妇丰满一区二区| 久久人人爽人人片| 欧美v在线观看| 91蝌蚪视频在线| 国产成人av影视| 老司机午夜网站| 免费一级特黄录像| 国产自产在线视频| 日韩av福利在线观看| 久草精品在线播放| 9色视频在线观看| 午夜精品在线免费观看| 国产又粗又猛又爽又黄的网站| 国产超碰在线播放| 国产毛片视频网站| 免费观看国产视频在线| 日韩爱爱小视频| 免费观看精品视频| 欧美不卡在线播放| 成人免费看片视频在线观看| 日韩高清第一页| 男女视频一区二区三区| 18禁免费无码无遮挡不卡网站| 樱空桃在线播放| 天天综合网久久| av无码精品一区二区三区| 阿v天堂2017| 日本五级黄色片| 欧美少妇在线观看| 久久久成人精品一区二区三区| 婷婷激情四射五月天| 97在线免费公开视频| 欧美极品欧美精品欧美| 日韩国产小视频| 久久综合久久网| 丝袜人妻一区二区三区| 黄色成人在线免费观看| 免费的av在线| 亚洲天堂第一区| 激情五月六月婷婷| 色欲色香天天天综合网www| 中文字幕精品在线播放| 特大黑人娇小亚洲女mp4| 国产美女视频免费| 青青视频免费在线| 妞干网视频在线观看| 欧美做暖暖视频| 国产中文字幕视频在线观看| 99爱视频在线| 少妇黄色一级片| 中文字幕一区二区在线观看视频 | 污污网站免费看| 爽爽爽在线观看| 成人毛片100部免费看| 成人一区二区免费视频| 精品国产免费av| 久久久久国产一区| 最新免费av网址| 日韩中文字幕亚洲精品欧美| 97超碰国产精品| 久久精品香蕉视频| 中文av字幕在线观看| 日日噜噜夜夜狠狠久久丁香五月| 妞干网在线观看视频| 1024精品视频| 视频免费1区二区三区| 91视频 - 88av| 另类小说第一页| 国产 国语对白 露脸 | 777久久久精品一区二区三区| 国产免费人做人爱午夜视频| www.午夜色| 国产美女三级视频| 亚洲 欧洲 日韩|