真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么新建游標(biāo) mysql定義游標(biāo)

求mysql的游標(biāo)用法詳細(xì)說(shuō)明,最好有例子!!

先聲明一個(gè)游標(biāo),語(yǔ)法:

創(chuàng)新互聯(lián)是一家專業(yè)提供漳平企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為漳平眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

DECLARE v_1 VARCHAR(16);

DECLARE v_2 VARCHAR(16);

DECLARE c_XXX CURSOR FOR

SELECT c_1, c_2

FROM t_1;

同時(shí)聲明一個(gè)布爾型的變量FOUND,當(dāng)循環(huán)的條件不成立時(shí),結(jié)束循環(huán)用的。

DECLARE FOUND BOOLEAN DEFAULT TRUE;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE;

在使用游標(biāo)的時(shí)候,要先打開游標(biāo),語(yǔ)法:OPEN c_XXX;

使用的時(shí)候,要先打開游標(biāo),取出第一條數(shù)據(jù),語(yǔ)法: FETCH c_XXX INTO v_1, v_2;

然后才開始執(zhí)行循環(huán),語(yǔ)法:WHILE FOUND DO

執(zhí)行需要執(zhí)行的語(yǔ)句;

取下一條數(shù)據(jù)放到當(dāng)前游標(biāo)中,F(xiàn)ETCH c_XXX INTO v_1, v_2;

結(jié)束循環(huán),語(yǔ)法:END WHILE;

結(jié)束游標(biāo),語(yǔ)法:CLOSE c_cargo。有什么問題我們?cè)贉贤ò?。不知道你具體要問題的是什么。

MySQL 游標(biāo)的定義與使用

從字面可以這么理解什么是游標(biāo),游標(biāo)就像是水面上漂浮的一個(gè)標(biāo)記,這個(gè)標(biāo)記可以來(lái)回游動(dòng),一會(huì)游到這里一會(huì)游到那里,這里的河水可以理解為是數(shù)據(jù)的集合,這個(gè)標(biāo)記就是在這些數(shù)據(jù)間來(lái)回游動(dòng)。

為什么 MySQL 會(huì)有游標(biāo)這個(gè)概念,由于 SQL 語(yǔ)言是面向集合的語(yǔ)句,它每次查詢出來(lái)都是一堆數(shù)據(jù)的集合,沒有辦法對(duì)其中一條記錄進(jìn)行單獨(dú)的處理。如果要對(duì)每條記錄進(jìn)行單獨(dú)處理就需要游標(biāo)。

游標(biāo)其實(shí)就像是編程語(yǔ)言中的 for/foreach 循環(huán),把一個(gè)數(shù)組(數(shù)據(jù)的集合)中每條數(shù)據(jù)一條一條地循環(huán)出來(lái),然后你在 for/foreach 循環(huán)中使用判斷語(yǔ)句對(duì)你感興趣的數(shù)據(jù)進(jìn)行處理。

哪里可以使用游標(biāo)呢,函數(shù),存儲(chǔ)過(guò)程,觸發(fā)器中都可以使用。

說(shuō)完概念,就來(lái)看下游標(biāo)的固定寫法。不管概念是否理解,記住下面的固定模式也可以完成搬磚任務(wù)。

1、聲明游標(biāo)

SELECT 語(yǔ)句就是正常的查詢語(yǔ)句,例如:SELECT id,age FROM table;

2、打開游標(biāo)

在打開游標(biāo)之前,游標(biāo)定義的 SQL 語(yǔ)句是不執(zhí)行的。

3、取出記錄

將當(dāng)前的記錄數(shù)據(jù)存入變量。

當(dāng) FETCH 沒有找到記錄時(shí)會(huì)拋出異常,異常的定義需要下面的 HANDLER FOR 語(yǔ)句。

聲明游標(biāo)語(yǔ)句中的 SELECT 如果有多個(gè)字段,INTO 后面需要多個(gè)變量進(jìn)行接收。

4、設(shè)置結(jié)束條件

這個(gè)語(yǔ)句的作用是指定一個(gè)條件,告訴程序所有數(shù)據(jù)已經(jīng)循環(huán)完畢,可以結(jié)束了。由于游標(biāo)是使用 WHILE 循環(huán)進(jìn)行每條數(shù)據(jù)的讀取,就需要給 WHILE 一個(gè)結(jié)束條件。

處理種類:可以是, EXIT 立即結(jié)束。CONTINUE 繼續(xù)下面的處理。

異常的類型:一般指定為 NOT FOUND ,意思是沒有找到任何數(shù)據(jù)。

異常發(fā)生時(shí)的處理:當(dāng)異常發(fā)生時(shí)需要做的事情,這里一般改變一個(gè)變量的值來(lái)記錄異常已經(jīng)發(fā)生了,如如 SET flat = 1 詳細(xì)用法查看下面的例子。

5、關(guān)閉游標(biāo)

實(shí)戰(zhàn)代碼:

完畢,看懂沒,如果沒看懂沒關(guān)系,游標(biāo)處理是一套固定的格式,按照上面例子中固定的格式套入到你的程序就可以了。

mysql的存儲(chǔ)過(guò)程怎么定義一個(gè)游標(biāo)

mysql的存儲(chǔ)過(guò)程定義一個(gè)游標(biāo)

-- 定義游標(biāo)cursor c_emp is select ename,job from emp where xx;-

當(dāng)作普通的查詢語(yǔ)句就OK啦!

mysql之游標(biāo)

游標(biāo):能夠?qū)Y(jié)果集中的每一條記錄進(jìn)行定位,并對(duì)指向的記錄中的數(shù)據(jù)進(jìn)行操作的數(shù)據(jù)結(jié)構(gòu)。

創(chuàng)建游標(biāo): CREATE FUNCTION 函數(shù)名稱 (參數(shù))RETURNS 數(shù)據(jù)類型 程序體

存儲(chǔ)過(guò)程中使用游標(biāo)的4個(gè)步驟:定義游標(biāo)、打開游標(biāo)、讀取游標(biāo)數(shù)據(jù)和關(guān)閉游標(biāo)。

定義游標(biāo): DECLARE 游標(biāo)名 CURSOR FOR 查詢語(yǔ)句

打開游標(biāo): OPEN 游標(biāo)名稱;

讀取游標(biāo)數(shù)據(jù): FETCH 游標(biāo)名 INTO 變量列表;

關(guān)閉游標(biāo): CLOSE 游標(biāo)名;

條件處理語(yǔ)句: DECLARE 處理方式[CONTINUE 或EXIT] HANDLER FOR 問題 操作;

流程控制語(yǔ)句:跳轉(zhuǎn)語(yǔ)句(ITERATE語(yǔ)句和LEAVE語(yǔ)句)、循環(huán)語(yǔ)句(LOOP、WHILE、REPEAT)、條件判斷語(yǔ)句(IF語(yǔ)句和CASE語(yǔ)句)

創(chuàng)建游標(biāo): CREATE FUNCTION 函數(shù)名稱 (參數(shù))RETURNS 數(shù)據(jù)類型 程序體

存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程很像,但有幾個(gè)不同點(diǎn):

1、存儲(chǔ)函數(shù)必須返回一個(gè)值或者數(shù)據(jù)表,存儲(chǔ)過(guò)程可以不返回。

2、存儲(chǔ)過(guò)程可以通過(guò)CALL語(yǔ)句調(diào)用,存儲(chǔ)函數(shù)不可以

3、存儲(chǔ)函數(shù)可以放在查詢語(yǔ)句中使用,存儲(chǔ)過(guò)程不可以

4、存儲(chǔ)過(guò)程的功能更強(qiáng)大,包括能夠執(zhí)行對(duì)表的操作(比如創(chuàng)建表、刪除表等)和事務(wù)操作

游標(biāo)操作步驟包含4個(gè):定義游標(biāo)、打開游標(biāo)、讀取游標(biāo)數(shù)據(jù)和關(guān)閉游標(biāo)。

1、創(chuàng)建存儲(chǔ)過(guò)程


網(wǎng)頁(yè)題目:mysql怎么新建游標(biāo) mysql定義游標(biāo)
文章出自:http://weahome.cn/article/ddijhcg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部