国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

窺探mysql存儲過程細節(jié)

2024-07-24 12:45:00
字體:
供稿:網(wǎng)友

存儲過程,可以這樣認為,將我們需要特殊處理的sql語句封裝成函數(shù),當需要的時候我們只需調(diào)用這個函數(shù)就可以實現(xiàn)我們想要的操作,這個過程我們可以稱之為存儲過程。當然了,真正存儲過程的定義不是這樣的。但是我們可以這樣簡單的去理解存儲過程。

下面我們看一個簡單的使用存儲過程的例子。

首先我們新建一張表 proced:

create table proced( id int(5) primary key auto_increment, name varchar(50), type varchar(50));

然后我們需要向這個表中插入10萬條數(shù)據(jù),這個時候我們需要借助存儲過程來實現(xiàn)這一功能。

mysql> delimiter //mysql> create procedure adddata() -->begin -->declare n int default 0; -->while n<100000 -->do -->insert into proced(name,type) values(‘跡憶博客','onmpw'); -->set n = n+1; -->end while; -->end -->//mysql> delimiter ;mysql> call adddata();

使用上述存儲過程,我們就可以向proced表中插入10萬條數(shù)據(jù)了。

借助上述小例子,我們來講一下如何創(chuàng)建一個存儲過程。

創(chuàng)建存儲過程

首先我們來看一下創(chuàng)建存儲過程的語法:

CREATE PROCEDURE procedure_name(IN/OUT/INOUT parameter TYPE)BEGIN procedure_bodyEND

這個過程比較簡單。

在上面的小例子中我們看到在創(chuàng)建存儲過程之前使用了delimiter //;,創(chuàng)建完成之后又再次 使用了命令 delimiter ;。

delimiter 是界定符,我們知道,在mysql命令行客戶端,是通過分號(;)來界定一個命令是否完成的。在存儲過程中,我們會多次使用到分號,但是這并不代表命令的結(jié)束,所以說我們需要使用delimiter命令來改變這個界定符。

mysql> delimiter //; 改變界定符為 //mysql> delimiter ; 重新改變界定符為分號

所以說我們?nèi)绻褂胢ysql命令行創(chuàng)建存儲過程的話,我們必須在創(chuàng)建存儲過程之前使用上述命令改變界定符。

接下來我們看到procedure_name()中的IN/OUT/INOUT,這是代表什么意思呢?

一個IN類型的參數(shù)會傳遞一個值到存儲哦過程中,也就是我們在編程語言中自定義函數(shù)的參數(shù)。如果參數(shù)前面沒有指定是IN/OUT/INOUT,那默認會是IN,看下面的例子:

mysql>delimiter //mysql> create procedure in_proced(IN param VARCHAR(100)) -->begin -->insert into proced(name,type) values(param,'onmpw'); -->end -->//mysql>delimiter ;mysql> call in_proced(‘onmpw.com');

這就是在參數(shù)前指定IN的含義。

下面我們看OUT,指定為OUT的參數(shù)將從存儲過程中傳遞一個值給調(diào)用者,也就是說,OUT可以認為這個參數(shù)就是我們自定義函數(shù)中的返回值。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台安县| 泰顺县| 比如县| 吉林市| 高陵县| 安陆市| 开封县| 江永县| 乌拉特前旗| 五原县| 叙永县| 镇雄县| 东辽县| 兴和县| 长白| 泊头市| 遂川县| 淅川县| 昌乐县| 武陟县| 翁牛特旗| 凤城市| 望江县| 秦皇岛市| 龙门县| 吴忠市| 海宁市| 云霄县| 宁陵县| 和田县| 蓝田县| 邹平县| 咸宁市| 聊城市| 积石山| 柘城县| 宜宾市| 江孜县| 普兰店市| 贵溪市| 射阳县|