MYSQL存儲(chǔ)過(guò)程技術(shù)ppt課件_第1頁(yè)
MYSQL存儲(chǔ)過(guò)程技術(shù)ppt課件_第2頁(yè)
MYSQL存儲(chǔ)過(guò)程技術(shù)ppt課件_第3頁(yè)
MYSQL存儲(chǔ)過(guò)程技術(shù)ppt課件_第4頁(yè)
MYSQL存儲(chǔ)過(guò)程技術(shù)ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、存儲(chǔ)過(guò)程的概念為什么運(yùn)用存儲(chǔ)過(guò)程根本創(chuàng)建、刪除語(yǔ)法存儲(chǔ)過(guò)程中的變量BEGIN.END復(fù)合語(yǔ)句 流程控制構(gòu)造語(yǔ)句注釋語(yǔ)法運(yùn)用權(quán)限條件和異常處置程序游標(biāo)存儲(chǔ)過(guò)程的概念:存儲(chǔ)過(guò)程的概念:所謂的存儲(chǔ)過(guò)程就是存儲(chǔ)在數(shù)據(jù)庫(kù)當(dāng)中的可以執(zhí)行特定任務(wù)所謂的存儲(chǔ)過(guò)程就是存儲(chǔ)在數(shù)據(jù)庫(kù)當(dāng)中的可以執(zhí)行特定任務(wù)(查詢和更新查詢和更新)的一的一組組SQL代碼的程序段。代碼的程序段。 與自定義函數(shù)的區(qū)別:與自定義函數(shù)的區(qū)別:自定義函數(shù)有且只需一個(gè)前往值,就像普通的函數(shù)一樣,可以直接在表達(dá)式中自定義函數(shù)有且只需一個(gè)前往值,就像普通的函數(shù)一樣,可以直接在表達(dá)式中嵌入調(diào)用。嵌入調(diào)用。 存儲(chǔ)過(guò)程可以沒(méi)有前往值,也可以有恣意個(gè)輸出參數(shù)

2、,必需單獨(dú)調(diào)用。存儲(chǔ)過(guò)程可以沒(méi)有前往值,也可以有恣意個(gè)輸出參數(shù),必需單獨(dú)調(diào)用。 執(zhí)行的本質(zhì)都一樣。只是函數(shù)有如只能前往一個(gè)變量的限制。而存儲(chǔ)過(guò)程可以執(zhí)行的本質(zhì)都一樣。只是函數(shù)有如只能前往一個(gè)變量的限制。而存儲(chǔ)過(guò)程可以前往多個(gè)。而函數(shù)是可以嵌入在前往多個(gè)。而函數(shù)是可以嵌入在sql中運(yùn)用的,可以在中運(yùn)用的,可以在select中調(diào)用,而存儲(chǔ)中調(diào)用,而存儲(chǔ)過(guò)程不行。過(guò)程不行。函數(shù)限制比較多,比如不能用暫時(shí)表,只能用表變量。還有一些函數(shù)都不可用函數(shù)限制比較多,比如不能用暫時(shí)表,只能用表變量。還有一些函數(shù)都不可用等等。而存儲(chǔ)過(guò)程的限制相對(duì)就比較少。等等。而存儲(chǔ)過(guò)程的限制相對(duì)就比較少。 普通來(lái)說(shuō),存儲(chǔ)過(guò)程實(shí)

3、現(xiàn)的功能要復(fù)雜一點(diǎn),而函數(shù)的實(shí)現(xiàn)的功能針對(duì)性比較普通來(lái)說(shuō),存儲(chǔ)過(guò)程實(shí)現(xiàn)的功能要復(fù)雜一點(diǎn),而函數(shù)的實(shí)現(xiàn)的功能針對(duì)性比較強(qiáng)。強(qiáng)。對(duì)于存儲(chǔ)過(guò)程來(lái)說(shuō)可以前往參數(shù),而函數(shù)只能前往值或者表對(duì)象。對(duì)于存儲(chǔ)過(guò)程來(lái)說(shuō)可以前往參數(shù),而函數(shù)只能前往值或者表對(duì)象。存儲(chǔ)過(guò)程普通是作為一個(gè)獨(dú)立的部分來(lái)執(zhí)行,而函數(shù)可以作為查詢語(yǔ)句的一個(gè)存儲(chǔ)過(guò)程普通是作為一個(gè)獨(dú)立的部分來(lái)執(zhí)行,而函數(shù)可以作為查詢語(yǔ)句的一個(gè)部分來(lái)調(diào)用,由于函數(shù)可以前往一個(gè)表對(duì)象,因此它可以在查詢語(yǔ)句中位于部分來(lái)調(diào)用,由于函數(shù)可以前往一個(gè)表對(duì)象,因此它可以在查詢語(yǔ)句中位于FROM關(guān)鍵字的后面。關(guān)鍵字的后面。為什么運(yùn)用存儲(chǔ)過(guò)程:為什么運(yùn)用存儲(chǔ)過(guò)程:存儲(chǔ)過(guò)程的優(yōu)點(diǎn):

4、存儲(chǔ)過(guò)程的優(yōu)點(diǎn): 存儲(chǔ)過(guò)程只在發(fā)明時(shí)進(jìn)展編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而存儲(chǔ)過(guò)程只在發(fā)明時(shí)進(jìn)展編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而普通普通SQL語(yǔ)句每執(zhí)行一次就編譯一次語(yǔ)句每執(zhí)行一次就編譯一次,所以運(yùn)用存儲(chǔ)過(guò)程可提高數(shù)據(jù)庫(kù)執(zhí)行速所以運(yùn)用存儲(chǔ)過(guò)程可提高數(shù)據(jù)庫(kù)執(zhí)行速度。度。 當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)展復(fù)雜操作時(shí)如對(duì)多個(gè)表進(jìn)展當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)展復(fù)雜操作時(shí)如對(duì)多個(gè)表進(jìn)展Update、Insert、Query、Delete時(shí),可將此復(fù)雜操作用存儲(chǔ)過(guò)程封裝起來(lái)與數(shù)據(jù)庫(kù)提供的事務(wù)處置結(jié)時(shí),可將此復(fù)雜操作用存儲(chǔ)過(guò)程封裝起來(lái)與數(shù)據(jù)庫(kù)提供的事務(wù)處置結(jié)合一同運(yùn)用。合一同運(yùn)用。 存儲(chǔ)過(guò)程可以反復(fù)運(yùn)用,可減少數(shù)

5、據(jù)庫(kù)開(kāi)發(fā)人員的任務(wù)量。存儲(chǔ)過(guò)程可以反復(fù)運(yùn)用,可減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的任務(wù)量。 平安性高,可設(shè)定只需某些用戶才具有對(duì)指定存儲(chǔ)過(guò)程的運(yùn)用權(quán)。平安性高,可設(shè)定只需某些用戶才具有對(duì)指定存儲(chǔ)過(guò)程的運(yùn)用權(quán)。根本的創(chuàng)建、刪除語(yǔ)法:根本的創(chuàng)建、刪除語(yǔ)法:CREATE PROCEDURE sp_name (proc_parameter,.) characteristic . routine_body 默許地,子程序與當(dāng)前數(shù)據(jù)庫(kù)關(guān)聯(lián)。要明確地把子程序與一個(gè)給定數(shù)據(jù)庫(kù)關(guān)聯(lián)默許地,子程序與當(dāng)前數(shù)據(jù)庫(kù)關(guān)聯(lián)。要明確地把子程序與一個(gè)給定數(shù)據(jù)庫(kù)關(guān)聯(lián)起來(lái),可以在創(chuàng)建子程序的時(shí)候指定其名字為起來(lái),可以在創(chuàng)建子程序的時(shí)候指定其名字為

6、db_name.sp_name。 sp_name 存儲(chǔ)過(guò)程的名字存儲(chǔ)過(guò)程的名字proc_parameter指定參數(shù)為指定參數(shù)為IN, OUT,或,或INOUTcharacteristic 特征特征routine_body 包含合法的包含合法的SQL過(guò)程語(yǔ)句。過(guò)程語(yǔ)句。DROP PROCEDURE | FUNCTION IF EXISTS sp_name這個(gè)語(yǔ)句被用來(lái)移除一個(gè)存儲(chǔ)程序或函數(shù)。即,從效力器移除一個(gè)制定的子程這個(gè)語(yǔ)句被用來(lái)移除一個(gè)存儲(chǔ)程序或函數(shù)。即,從效力器移除一個(gè)制定的子程序。在序。在MySQL 5.1中,他必需有中,他必需有ALTER ROUTINE權(quán)限才可用此子程序。這個(gè)權(quán)限才

7、可用此子程序。這個(gè)權(quán)限被自動(dòng)授予子程序的創(chuàng)建者。權(quán)限被自動(dòng)授予子程序的創(chuàng)建者。 IF EXISTS 子句是一個(gè)子句是一個(gè)MySQL的擴(kuò)展。假設(shè)程序或函數(shù)不存在,它防止發(fā)生的擴(kuò)展。假設(shè)程序或函數(shù)不存在,它防止發(fā)生錯(cuò)誤。錯(cuò)誤。根本的創(chuàng)建、調(diào)用、刪除語(yǔ)法:根本的創(chuàng)建、調(diào)用、刪除語(yǔ)法:delimiter /DROP PROCEDURE IF EXISTS test /CREATE PROCEDURE test /* 存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程名 */(IN inparms INT, OUT outparams varchar(32) /* 輸入?yún)?shù)輸入?yún)?shù) */BEGIN /* 語(yǔ)句塊頭語(yǔ)句塊頭 */ DEC

8、LARE var CHAR(10); /* 變量聲明變量聲明 */ IF inparms = 1 THEN /* IF條件開(kāi)場(chǎng)條件開(kāi)場(chǎng)*/ SET var = hello; /* 賦值賦值 */ ELSE SET var = world; END IF; /* IF終了終了 */ INSERT INTO t1 VALUES (var); /* SQL語(yǔ)句語(yǔ)句 */ SELECT name FROM t1 LIMIT 1 INTO outparams;END/delimiter ; call test(1, out);存儲(chǔ)過(guò)程的變量:存儲(chǔ)過(guò)程的變量: 聲明變量:聲明變量:DECLARE var_

9、name,. type DEFAULT value這個(gè)語(yǔ)句被用來(lái)聲明部分變量。要給變量提供一個(gè)默許值,需求包含一個(gè)這個(gè)語(yǔ)句被用來(lái)聲明部分變量。要給變量提供一個(gè)默許值,需求包含一個(gè)DEFAULT子句。值可以被指定為一個(gè)表達(dá)式,不需求為一個(gè)常數(shù)。假設(shè)沒(méi)有子句。值可以被指定為一個(gè)表達(dá)式,不需求為一個(gè)常數(shù)。假設(shè)沒(méi)有DEFAULT子句,初始值為子句,初始值為NULL。 部分變量的作用范圍在它被聲明的部分變量的作用范圍在它被聲明的BEGIN . END塊內(nèi)。它可以被用在嵌套的塊內(nèi)。它可以被用在嵌套的塊中,除了那些用一樣名字聲明變量的塊。塊中,除了那些用一樣名字聲明變量的塊。 變量賦值,變量賦值,SET語(yǔ)句

10、:語(yǔ)句:SET var_name = expr , var_name = expr .也可以用語(yǔ)句替代也可以用語(yǔ)句替代SET來(lái)為用戶變量分配一個(gè)值。在這種情況下,分配符必需來(lái)為用戶變量分配一個(gè)值。在這種情況下,分配符必需為為:=而不能用而不能用=,由于在非,由于在非SET語(yǔ)句中語(yǔ)句中=被視為一個(gè)比較被視為一個(gè)比較 操作符,如下所示:操作符,如下所示:mysql SET t1=0, t2=0, t3=0;mysql SELECT t1:=0,t2:=0,t3:=0;對(duì)于運(yùn)用對(duì)于運(yùn)用select語(yǔ)句為變量賦值的情況,假設(shè)前往結(jié)果為空,即沒(méi)有記錄,此語(yǔ)句為變量賦值的情況,假設(shè)前往結(jié)果為空,即沒(méi)有記錄

11、,此時(shí)變量的值為上一次變量賦值時(shí)的值,假設(shè)沒(méi)有對(duì)變量賦過(guò)值,那么為時(shí)變量的值為上一次變量賦值時(shí)的值,假設(shè)沒(méi)有對(duì)變量賦過(guò)值,那么為NULL。 變量賦值,變量賦值,SELECT . INTO語(yǔ)句語(yǔ)句SELECT col_name,. INTO var_name,. table_expr這個(gè)這個(gè)SELECT語(yǔ)法把語(yǔ)法把選定的列直接存儲(chǔ)到變量。因此,只需單一的行可以被取回。選定的列直接存儲(chǔ)到變量。因此,只需單一的行可以被取回。SELECT id,data INTO x,y FROM test.t1 LIMIT 1;BEGIN.END復(fù)合語(yǔ)句:復(fù)合語(yǔ)句: begin_label: BEGIN state

12、ment_list END end_label 存儲(chǔ)子程序可以運(yùn)用存儲(chǔ)子程序可以運(yùn)用BEGIN . END復(fù)合語(yǔ)句來(lái)包含多個(gè)語(yǔ)句。復(fù)合語(yǔ)句來(lái)包含多個(gè)語(yǔ)句。statement_list 代表一個(gè)或多個(gè)語(yǔ)句的列表。代表一個(gè)或多個(gè)語(yǔ)句的列表。statement_list之內(nèi)每個(gè)語(yǔ)句都之內(nèi)每個(gè)語(yǔ)句都必需用分號(hào);來(lái)結(jié)尾。必需用分號(hào);來(lái)結(jié)尾。 復(fù)合語(yǔ)句可以被標(biāo)志。除非復(fù)合語(yǔ)句可以被標(biāo)志。除非begin_label存在,否那么存在,否那么end_label不能被給出,不能被給出,并且假設(shè)二者都存在,他們必需是同樣的。并且假設(shè)二者都存在,他們必需是同樣的。 運(yùn)用多重語(yǔ)句需求客戶端能發(fā)送包含語(yǔ)句定界符運(yùn)用多重語(yǔ)

13、句需求客戶端能發(fā)送包含語(yǔ)句定界符;的查詢字符串。這個(gè)符號(hào)在的查詢字符串。這個(gè)符號(hào)在命令行客戶端被用命令行客戶端被用delimiter命令來(lái)處置。改動(dòng)查詢結(jié)尾定界符命令來(lái)處置。改動(dòng)查詢結(jié)尾定界符;比如改動(dòng)為比如改動(dòng)為/使得使得; 可被用在子程序體中??杀挥迷谧映绦蝮w中。流程控制構(gòu)造語(yǔ)句:流程控制構(gòu)造語(yǔ)句: IF語(yǔ)句語(yǔ)句IF search_condition THEN statement_list ELSEIF search_condition THEN statement_list . ELSE statement_listEND IF IF實(shí)現(xiàn)了一個(gè)根本的條件構(gòu)造。假設(shè)實(shí)現(xiàn)了一個(gè)根本的條件構(gòu)造

14、。假設(shè)search_condition求值為真,相應(yīng)的求值為真,相應(yīng)的SQL語(yǔ)句列表被執(zhí)行。假設(shè)沒(méi)有語(yǔ)句列表被執(zhí)行。假設(shè)沒(méi)有search_condition匹配,在匹配,在ELSE子句里的語(yǔ)句列子句里的語(yǔ)句列表被執(zhí)行。表被執(zhí)行。statement_list可以包括一個(gè)或多個(gè)語(yǔ)句。可以包括一個(gè)或多個(gè)語(yǔ)句。 舉例:舉例: DELIMITER /CREATE PROCEDURE p1(IN parameter1 INT) BEGIN DECLARE variable1 INT; SET variable1 = parameter1 + 1; IF variable1 = 0 THEN INSERT

15、INTO t VALUES (17); END IF; IF parameter1 = 0 THEN UPDATE t SET s1 = s1 + 1; ELSE UPDATE t SET s1 = s1 + 2; END IF;END; /DELIMITER ;流程控制構(gòu)造語(yǔ)句:流程控制構(gòu)造語(yǔ)句: CASE語(yǔ)句語(yǔ)句CASE case_value WHEN when_value THEN statement_list WHEN when_value THEN statement_list . ELSE statement_listEND CASE Or: CASE WHEN search_co

16、ndition THEN statement_list WHEN search_condition THEN statement_list . ELSE statement_listEND CASE 存儲(chǔ)程序的存儲(chǔ)程序的CASE語(yǔ)句實(shí)現(xiàn)一個(gè)復(fù)雜的條件構(gòu)造。假設(shè)語(yǔ)句實(shí)現(xiàn)一個(gè)復(fù)雜的條件構(gòu)造。假設(shè)search_condition 求值求值為真,相應(yīng)的為真,相應(yīng)的SQL被執(zhí)行。假設(shè)沒(méi)有搜索條件匹配,在被執(zhí)行。假設(shè)沒(méi)有搜索條件匹配,在ELSE子句里的語(yǔ)句被子句里的語(yǔ)句被執(zhí)行。執(zhí)行。舉例:舉例:CREATE PROCEDURE p2 (IN parameter1 INT)BEGIN DECLARE var

17、iable1 INT; SET variable1 = parameter1 + 1; CASE variable1 WHEN 0 THEN INSERT INTO t VALUES (17); WHEN 1 THEN INSERT INTO t VALUES (18); ELSE INSERT INTO t VALUES (19); END CASE;END; /流程控制構(gòu)造語(yǔ)句:流程控制構(gòu)造語(yǔ)句: 循環(huán)語(yǔ)句循環(huán)語(yǔ)句WHILE END WHILELOOP END LOOPREPEAT END REPEATGOTO前三種是規(guī)范的循環(huán)方式,至于前三種是規(guī)范的循環(huán)方式,至于GOTO就如就如C言語(yǔ)里

18、的言語(yǔ)里的GOTO一樣,盡量少用!一樣,盡量少用!在循環(huán)中還交叉一些循環(huán)控制語(yǔ)句,如在循環(huán)中還交叉一些循環(huán)控制語(yǔ)句,如LEAVE類似類似C言語(yǔ)的言語(yǔ)的break、ITERATE類似類似C言語(yǔ)的言語(yǔ)的continue等。等。 LEAVE語(yǔ)句語(yǔ)句LEAVE label 這個(gè)語(yǔ)句被用來(lái)退出任何被標(biāo)注的流程控制構(gòu)造。它和這個(gè)語(yǔ)句被用來(lái)退出任何被標(biāo)注的流程控制構(gòu)造。它和BEGIN . END或循環(huán)一同被運(yùn)用。或循環(huán)一同被運(yùn)用。ITERATE語(yǔ)句語(yǔ)句ITERATE label ITERATE只可以出如今只可以出如今LOOP, REPEAT, 和和WHILE語(yǔ)句內(nèi)。語(yǔ)句內(nèi)。ITERATE意思為:再次循環(huán)。意

19、思為:再次循環(huán)。流程控制構(gòu)造語(yǔ)句:流程控制構(gòu)造語(yǔ)句: 循環(huán)語(yǔ)句循環(huán)語(yǔ)句WHILE END WHILE 舉例:舉例:CREATE PROCEDURE p4 ()BEGIN DECLARE v INT; SET v = 0; WHILE v = 5 THEN LEAVE loop_label; END IF; END LOOP;END; /begin_label: LOOP statement_listEND LOOP end_labelLOOP允許某特定語(yǔ)句或語(yǔ)句群的反復(fù)執(zhí)行,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的循環(huán)構(gòu)造。在循允許某特定語(yǔ)句或語(yǔ)句群的反復(fù)執(zhí)行,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的循環(huán)構(gòu)造。在循環(huán)內(nèi)的語(yǔ)句不斷反復(fù)直到循環(huán)被退

20、出,退出通常伴隨著一個(gè)環(huán)內(nèi)的語(yǔ)句不斷反復(fù)直到循環(huán)被退出,退出通常伴隨著一個(gè)LEAVE 語(yǔ)句。語(yǔ)句。流程控制構(gòu)造語(yǔ)句:流程控制構(gòu)造語(yǔ)句: 循環(huán)語(yǔ)句循環(huán)語(yǔ)句REPEAT END REPEAT 舉例:舉例:CREATE PROCEDURE p6 ()BEGIN DECLARE v INT; SET v = 0; REPEAT INSERT INTO t VALUES (v); SET v = v + 1; UNTIL v = 5 END REPEAT;END; /功能與功能與WHILE差不多,差別是在執(zhí)行一次后檢查,而差不多,差別是在執(zhí)行一次后檢查,而WHILE是在開(kāi)場(chǎng)時(shí)檢查,是在開(kāi)場(chǎng)時(shí)檢查,累死累

21、死DOWHILE功能。功能。流程控制構(gòu)造語(yǔ)句:流程控制構(gòu)造語(yǔ)句:補(bǔ)充:迭代補(bǔ)充:迭代ITERATE語(yǔ)句語(yǔ)句CREATE PROCEDURE p7 ()BEGIN DECLARE v INT; SET v = 0; loop_label: LOOP IF v = 3 THEN SET v = v + 1; ITERATE loop_label; END IF; INSERT INTO t VALUES (v); SET v = v + 1; IF v = 5 THEN LEAVE loop_label; END IF; END LOOP;END; /注釋語(yǔ)法:注釋語(yǔ)法:mysql存儲(chǔ)過(guò)程可運(yùn)用兩

22、種風(fēng)格的注釋存儲(chǔ)過(guò)程可運(yùn)用兩種風(fēng)格的注釋雙模杠:雙模杠:-,該風(fēng)格普通用于單行注釋,該風(fēng)格普通用于單行注釋c風(fēng)格:風(fēng)格:/* 注釋內(nèi)容注釋內(nèi)容 */, 普通用于多行注釋普通用于多行注釋運(yùn)用權(quán)限:運(yùn)用權(quán)限:關(guān)于存儲(chǔ)過(guò)程的權(quán)限管理,一種是關(guān)于存儲(chǔ)過(guò)程的權(quán)限管理,一種是SQL SECURITY INVOKER,一種是,一種是SQL SECURITY DEFINER,也就是一種是調(diào)用者權(quán)限,一種是定義者權(quán)限,假設(shè)運(yùn)也就是一種是調(diào)用者權(quán)限,一種是定義者權(quán)限,假設(shè)運(yùn)用第一種,那么執(zhí)行的時(shí)候是以執(zhí)行者本身的權(quán)限來(lái)操作存儲(chǔ)過(guò)程中包含的表。用第一種,那么執(zhí)行的時(shí)候是以執(zhí)行者本身的權(quán)限來(lái)操作存儲(chǔ)過(guò)程中包含的表。假

23、設(shè)是第二種,那么執(zhí)行的時(shí)候,是以該存儲(chǔ)過(guò)程的定義者權(quán)限來(lái)操作。假設(shè)是第二種,那么執(zhí)行的時(shí)候,是以該存儲(chǔ)過(guò)程的定義者權(quán)限來(lái)操作。條件和異常處置程序:條件和異常處置程序:DECLARE handler_type HANDLER FOR condition_value,. sp_statement handler_type: CONTINUE | EXIT condition_value: SQLSTATE VALUE sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION這個(gè)語(yǔ)句指定每個(gè)可以處置一個(gè)或多個(gè)條件的

24、處置程序。假設(shè)產(chǎn)生一個(gè)或多個(gè)這個(gè)語(yǔ)句指定每個(gè)可以處置一個(gè)或多個(gè)條件的處置程序。假設(shè)產(chǎn)生一個(gè)或多個(gè)條件,指定的語(yǔ)句被執(zhí)行。條件,指定的語(yǔ)句被執(zhí)行。 對(duì)一個(gè)對(duì)一個(gè)CONTINUE處置程序,當(dāng)前子程序的執(zhí)行在執(zhí)行處置程序語(yǔ)句之后繼處置程序,當(dāng)前子程序的執(zhí)行在執(zhí)行處置程序語(yǔ)句之后繼續(xù)。對(duì)于續(xù)。對(duì)于EXIT處置程序,當(dāng)前處置程序,當(dāng)前BEGIN.END復(fù)合語(yǔ)句的執(zhí)行被終止。復(fù)合語(yǔ)句的執(zhí)行被終止。UNDO 處置程序類型語(yǔ)句還不被支持。處置程序類型語(yǔ)句還不被支持。SQLWARNING是對(duì)一切以是對(duì)一切以01開(kāi)頭的開(kāi)頭的SQLSTATE代碼的速記。代碼的速記。NOT FOUND是對(duì)一切以是對(duì)一切以02開(kāi)頭的開(kāi)

25、頭的SQLSTATE代碼的速記。代碼的速記。SQLEXCEPTION是對(duì)一切沒(méi)有被是對(duì)一切沒(méi)有被SQLWARNING或或NOT FOUND捕獲的捕獲的SQLSTATE代碼的速記。代碼的速記。聲明自定義條件:聲明自定義條件:DECLARE condition_name CONDITION FOR condition_valuecondition_value: SQLSTATE VALUE sqlstate_value條件和異常處置程序:條件和異常處置程序:舉例:舉例:CREATE TABLE test.t (s1 int,primary key (s1);delimiter /CREATE PR

26、OCEDURE handlerdemo ()BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE 23000 SET x2 = 1; SET x = 1; INSERT INTO test.t VALUES (1); SET x = 2; INSERT INTO test.t VALUES (1); SET x = 3;END;/delimiter ;游標(biāo):游標(biāo):聲明游標(biāo)聲明游標(biāo)DECLARE cursor_name CURSOR FOR select_statement這個(gè)語(yǔ)句聲明一個(gè)光標(biāo)。也可以在子程序中定義多個(gè)光標(biāo),但是一個(gè)塊中的每這個(gè)語(yǔ)句聲明一個(gè)光標(biāo)。也可以在子程序中定義多個(gè)光標(biāo),但是一個(gè)塊中的每一個(gè)光標(biāo)必需有獨(dú)一的名字。一個(gè)光標(biāo)必需有獨(dú)一的名字。翻開(kāi)游標(biāo)翻開(kāi)游標(biāo)OPEN cursor_name這個(gè)語(yǔ)句翻開(kāi)先前聲明的光標(biāo)。這個(gè)語(yǔ)句翻開(kāi)先前聲明的光標(biāo)。游標(biāo)游標(biāo)FETCHFETCH

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論