




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、達(dá)夢數(shù)據(jù)庫存儲過程的特點達(dá)夢數(shù)據(jù)庫允許用戶使用系統(tǒng)提供的dmpl/sql語言創(chuàng)建過程或函數(shù),這些過程或函數(shù)象普通的過程或函數(shù)一樣,有輸入、輸出參數(shù)和返回值,它們與表和視圖等數(shù)據(jù)庫對象一樣被存儲在數(shù)據(jù)庫中,供用戶隨時調(diào)用。存儲過程和存儲函數(shù)在功能上相當(dāng)于客戶端的一段sql批處理程序,但是在許多方面有著后者無法比擬的優(yōu)點,它為用戶提供了一種高效率的編程手段,成為現(xiàn)代數(shù)據(jù)庫系統(tǒng)的重要特征。25億網(wǎng)站后臺管理系統(tǒng)將存儲過程和存儲函數(shù)統(tǒng)稱為存儲模塊。達(dá)夢數(shù)據(jù)庫的存儲模塊機(jī)制是一種技術(shù),而不是一種獨立的工具,它是和服務(wù)器緊密結(jié)合在一起的??梢哉J(rèn)為這種技術(shù)是執(zhí)行dmpl/sql語言的一種機(jī)器,它可以接受任何
2、有效的存儲模塊,按照語言本身所規(guī)定的語義執(zhí)行,并將結(jié)果返回給客戶。達(dá)夢數(shù)據(jù)庫的存儲模塊機(jī)制具有如下優(yōu)點:1. 提供更高的生產(chǎn)率(1) 在設(shè)計應(yīng)用時,圍繞存儲過程/函數(shù)設(shè)計應(yīng)用,可以避免重復(fù)編碼,提高生產(chǎn)率;(2) 在自頂向下設(shè)計應(yīng)用時,不必關(guān)心實現(xiàn)的細(xì)節(jié);(3) 編程方便。2. 便于維護(hù)(1) 用戶的存儲模塊在數(shù)據(jù)庫集中存放;(2) 用戶可以隨時查詢、刪除它們,而應(yīng)用程序可以不作任何修改,或只做少量調(diào)整。3. 提供更好的性能(1) 存儲模塊在創(chuàng)建時被編譯成偽碼序列,在運(yùn)行時不需要重新進(jìn)行編譯和優(yōu)化處理,它具有更快的執(zhí)行速度,可以同時被多個用戶調(diào)用,并能夠減少操作錯誤;如用sqlserver修改
3、mssql2000的存儲過程所有者為dbo,這些小地方還是有些麻煩的。(2) 存儲模塊在執(zhí)行時數(shù)據(jù)對用戶是不可見的,提高了數(shù)據(jù)庫的安全性;(3) 存儲模塊具有更高的可靠性;(4) 存儲模塊是一種高效訪問數(shù)據(jù)庫的機(jī)制,網(wǎng)站后臺管理模板使用存儲模塊可減少應(yīng)用對dm的調(diào)用,降低了系統(tǒng)資源浪費,顯著提高性能,尤其是在網(wǎng)絡(luò)上與dm通訊的應(yīng)用更顯著。 dm與oracle存儲過程對比表操作oracledm差異基本語法存儲過程:create or replace procedure procedure_name ( argumentin | out | in out type,.argument
4、in | out | in out type) is | asprocedure_body其中procedure_name是要創(chuàng)建的過程名,argument是過程的參數(shù)名,type是關(guān)聯(lián)參數(shù)的類型,procedure_body是構(gòu)成該過程代碼的pl/sql塊。in,out,和in out是參數(shù)的模式,如果沒有為參數(shù)指定模式,則參數(shù)缺省的模式是in。存儲函數(shù):create or replace function function_name( argumentin | out | in out type,.argumentin | out | in out type)return return_t
5、ypeis | asfunction_body其中function_name是函數(shù)的名稱,參數(shù)argument和type的含義與過程相同, return_type是函數(shù)返回值的類型,function_body是包括函數(shù)體的p l / s q l塊。in , out,和in out是參數(shù)的模式。如果沒有為參數(shù)指定模式,則參數(shù)缺省的模式是in。存儲過程:create or replace procedure <存儲過程名>(<參數(shù)名> <參數(shù)模式> <參數(shù)類型> ,<參數(shù)名> <參數(shù)模式> <參數(shù)類型>)as |
6、is<說明部分><執(zhí)行部分><異常處理部分>end;存儲函數(shù):create or replace function <存儲函數(shù)名>(<參數(shù)名> <參數(shù)模式> <參數(shù)類型>,<參數(shù)名> <參數(shù)模式> <參數(shù)類型>)return <返回數(shù)據(jù)類型>as | is<說明部分><執(zhí)行部分><異常處理部分>end;在存儲函數(shù)中必須使用return語句向函數(shù)的調(diào)用環(huán)境返回一個值。存儲函數(shù)不能用call語句調(diào)用,它只能出現(xiàn)在表達(dá)式中。存儲函數(shù)和
7、存儲過程很相似,它們的區(qū)別在于:1. 存儲過程沒有返回值,而存儲函數(shù)有;2. 存儲過程中可以沒有返回語句,而存儲函數(shù)必須通過返回語句結(jié)束;3. 存儲過程的返回語句中不能帶表達(dá)式,而存儲函數(shù)必須帶表達(dá)式;4. 存儲過程不能出現(xiàn)在一個表達(dá)式中,而存儲函數(shù)只能出現(xiàn)在表達(dá)式中。無創(chuàng)建存儲過程create or replace procedure <存儲過程名定義> (<參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式> ,<參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式> ) with
8、 encryption as | is<說明部分>begin <執(zhí)行部分> <異常處理部分>end; create or replace procedure <存儲過程名定義> (<參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式> ,<參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式> ) with encryption as | is<說明部分>begin <執(zhí)行部分> <異常處理部分>end;無撤銷存儲
9、過程drop procedure <存儲過程名>drop procedure <存儲過程名>無調(diào)用存儲過程call <存儲過程名>(<參數(shù)>,<參數(shù)>);1. call <存儲過程名>(<參數(shù)>,<參數(shù)>);2. exec <存儲過程名>(<參數(shù)>,<參數(shù)>);3. <存儲過程名>(<參數(shù)>,<參數(shù)>);dm支持多種調(diào)用方式創(chuàng)建存儲函數(shù)create or replace function <存儲函數(shù)名定義> (<
10、;參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式>,<參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式>)return <返回數(shù)據(jù)類型>with encryption as | is<說明部分>begin<執(zhí)行部分><異常處理部分>end;create or replace function <存儲函數(shù)名定義> (<參數(shù)名> <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式>,<參數(shù)名&g
11、t; <參數(shù)模式> <參數(shù)類型> <默認(rèn)值表達(dá)式>)return <返回數(shù)據(jù)類型>with encryption as | is<說明部分>begin<執(zhí)行部分><異常處理部分>end;無撤銷存儲函數(shù)drop function <存儲函數(shù)名>drop function <存儲函數(shù)名>無調(diào)用存儲函數(shù)select <存儲函數(shù)名>(<參數(shù)>,<參數(shù)>);select <存儲函數(shù)名>(<參數(shù)>,<參數(shù)>);無plsql支持的
12、結(jié)構(gòu)1. 順序結(jié)構(gòu);2. 分支結(jié)構(gòu),包括條件、循環(huán)結(jié)構(gòu)等;3. 迭代結(jié)構(gòu),包括子過程、子函數(shù)的調(diào)用。1. 順序結(jié)構(gòu);2. 分支結(jié)構(gòu),包括條件、循環(huán)結(jié)構(gòu)等;3. 迭代結(jié)構(gòu),包括子過程、子函數(shù)的調(diào)用。無語句塊結(jié)構(gòu)declare.begin.exception.end;語法格式:declare <變量說明> begin<執(zhí)行部分><異常處理部分>enddmpl/sql基本的程序單元;一個語句可以當(dāng)作一個整體sql語句對待,允許嵌套,可出現(xiàn)在sql語句能出現(xiàn)的任何地方。無賦值語句variable := expression;給對象賦值;語法格式:1. <賦值對
13、象>:=<值表達(dá)式>2. set <賦值對象>=<值表達(dá)式>需要注意的是,使用第2種形式時,不需要冒號“:”。dm支持多種賦值方式變量定義variable data_type:=|default default_value;1. 在語句塊的說明部分可以定義變量、游標(biāo)、異常變量、子過程或子函數(shù);2. 需要強(qiáng)調(diào)的一點是,一個語句塊意味著一個作用域范圍,也就是說,在一個語句塊的說明部分定義的任何對象,其作用域就是該語句塊;3. 暫不支持缺省值的定義。oracle支持缺省值;dm不支持缺省值;返回語句return;return <結(jié)果值>retur
14、n;return <結(jié)果值>1. 結(jié)束存儲模塊的運(yùn)行,將控制返回給調(diào)用者;2. 如果從函數(shù)返回,同時返回函數(shù)的結(jié)果。無退出循環(huán)exit when condition;exit when condition;1. exit與循環(huán)語句一起使用,用于終止循環(huán)語句的執(zhí)行,將控制轉(zhuǎn)移到循環(huán)語句的下一個語句;2. 可以無條件終止循環(huán)語句;3. 可以帶條件終止循環(huán)語句,當(dāng)檢測條件滿足時才執(zhí)行exit語句。無if語句if <condition1> then<perform action1>elsif <condition2><perform action2
15、>elsif <conditionn><perform actionn>else<perform default action>end if;根據(jù)布爾表達(dá)式的值,進(jìn)行程序的分支控制;語法格式:if <條件表達(dá)式> then<執(zhí)行部分>elseif|elsif <條件表達(dá)式> then<執(zhí)行部分>else <執(zhí)行部分>end if;注意:elseif與elsif兩種寫法。dm支持兩種語法標(biāo)記循環(huán)語句1. whilewhile <condition> loop<statement
16、1><statement2>.end loop;2. loop <<label>> loopstatementsend loop label ;2 forfor 循環(huán)計數(shù)器 in reverse 下限 . 上限 loop要執(zhí)行的語句;end loop;5. for_queryfor loop_name in <select_statement> loop<statement1><statement2>end loop;1. loop:循環(huán)執(zhí)行,直至exit語句終止;create or replace procudur
17、e p2as a int;begin a := 0; loop if a>10 then exit; else a := a+1; end if; end loop;end;2. while:循環(huán)檢測執(zhí)行條件,為true時執(zhí)行,否則退出;create or replace procedure p3asdeclare a int;begin a := 10; while a>0 loop a := a-1; end loop;end;3. for:執(zhí)行指定次數(shù);create or replace procedure p4asdeclare a int;begin for a in 1
18、 . 10 loop print a; end loop;end;4. repeat:重復(fù)執(zhí)行,直至達(dá)到條件要求。create or replace procedure p5asdeclare a int;begin a := 0; repeat a := a+1; until a>10;end;無null語句null;null;1. 不執(zhí)行任何操作;2. 只用于增強(qiáng)程序的可讀性。無打印語句dbms_output.put_line(v_out.xx);print <值表達(dá)式>打印調(diào)試信息,用于調(diào)試存儲模塊。打印語句不同,但不影響整理邏輯性動態(tài)語句執(zhí)行execute immed
19、iate commandstringinto using in out ;execute immediate commandstringinto using in out ;如下例所示:create or replace procedure p8as v_sql varchar(2000); v_a int; v_b int;begin v_sql := insert into t1(a,b) values(?,?); v_a := 10; v_b := 10; execute immediate v_sql using v_a,v_b; end;無游標(biāo)的使用1. 定義游標(biāo)cursor cur
20、sor_name(parameter, parameter) is select_statement;2. 打開游標(biāo)open cursor_name(parameter => value, parameter=> value);open curso_name for query_string using in outinout ;3. 使用游標(biāo)獲取數(shù)據(jù)fetch cursor_name into variable_list |record_variable ;4. 關(guān)閉游標(biāo)close cursor_name;5. 游標(biāo)的屬性(1) %found 布爾型屬性,當(dāng)最近一次讀記錄時成功返
21、回,則值為true;(2) %notfound 布爾型屬性,與%found相反;(3) %isopen 布爾型屬性,當(dāng)游標(biāo)已打開時返回 true;(4) %rowcount 數(shù)字型屬性,返回已從游標(biāo)中讀取的記錄數(shù)。1. 游標(biāo)不能作為參數(shù)傳遞,也不能被賦值;2. 游標(biāo)的四個屬性:(1) found:撥動游標(biāo),取到數(shù)據(jù)為真,否則為假;(2) notfound:撥動游標(biāo),取到數(shù)據(jù)為假,否則為真;(3) isopen:游標(biāo)打開為真,否則為假;(4) rowcount:第一次撥動之前為0,否則為撥動游標(biāo)后已經(jīng)取得的數(shù)據(jù)數(shù)。3. 游標(biāo)變量與普通游標(biāo)不同,游標(biāo)變量可以指向不同的游標(biāo)工作區(qū),它為用戶提供了更靈
22、活的數(shù)據(jù)操作方法。定義和打開游標(biāo)變量的語法與普通游標(biāo)不同。定義游標(biāo)變量: <游標(biāo)變量名> cursor 打開游標(biāo)變量: open <游標(biāo)變量名> for <不帶into查詢表達(dá)式> 或 open <游標(biāo)變量名> for <表達(dá)式> using <綁定參數(shù)> ,<綁定參數(shù)> 其它的游標(biāo)操作與普通游標(biāo)相同。例子如下: create or replace procedure curvar asc1 cursor;vename char(10);vempno numeric(4);vsal numeric(7,2);b
23、egin vsal:=2000;open c1 for 'select ename, empno from other.empsalary where sal> ?' using vsal; loopfetch c1 into vename, vempno; exit when c1%notfound;print 'name = '| vename |' no = '|vempno;end loop;close c1;end;本例中的open語句也可寫成如下等價的形式:open c1 for select ename, empno from
24、 emp where sal > vsal;無動態(tài)語句游標(biāo)定義type name_type is ref cursor;name name_type;暫不提供動態(tài)游標(biāo)的支持。此功能非常用功能case語句case expression1when expression2 then<statement1><statement2>.when expression3 then<statement3><statement4>.else<statement5><statement6>.end case;暫不提供case語句的支持。
25、可以使用if語句代替。case表達(dá)式case when condition thenresultwhen .else resultend暫不提供case表達(dá)式的支持??梢允褂胕f語句代替。異常的處理1. 自定義異常聲明<異常情況>exception;2. 拋出自定義異常raise <異常情況>;1. 異常的處理(1) 在模塊正常執(zhí)行的過程中,可能會出現(xiàn)未預(yù)料的事件,稱之為異常;(2) 異常會導(dǎo)致執(zhí)行不正確的結(jié)束,因此需要進(jìn)行異常處理;(3) dm提供了一些預(yù)定義的異常,與常見的dm錯誤相對應(yīng);(4) others:特殊的異常名,用于處理沒有明確列出的異常。2. 異常變量
26、的定義(1) 用戶可以自定義異常變量;<異常變量名> exception for <錯誤號>;(2) 其中,for子句用來為異常變量綁定錯誤號(sqlcode值);(3) 異常變量類似于一般的變量,必須在塊的說明部分說明,有同樣的生存期和作用域;(4) 但是異常變量不能作參數(shù)傳遞,也不能被賦值;(5) 需要注意的是,為異常變量綁定的錯誤號不一定是dm返回的系統(tǒng)錯誤,但是該錯誤號必須是一個負(fù)整數(shù)。3. 拋出異常(1) 當(dāng)異常發(fā)生時,系統(tǒng)會自動拋出異常;(2) 用戶也可以主動拋出異常:raise <異常名>;(3) 一旦異常拋出,執(zhí)行將轉(zhuǎn)到相應(yīng)的異常處理部分。4
27、. 異常處理器(1) 語法格式:<異常處理部分> := exception <異常處理語句> <異常處理語句> :=when <異常名> then <執(zhí)行部分> (2) others必須在最后。5. 異常處理的實例create or replace procedure p6as a int; e1 exception;begin a := a/0; raise e1;exception when zero_divide then print divided by zero; when e1 then print e1; when ot
28、hers then print error;end;無select into賦值select select_expressions into targetfrom .;execute immediate commandstringinto using in outselect select_expressions into targetfrom .;execute immediate commandstringinto using in out無goto語句goto label_name;只能由內(nèi)部的語句塊跳往外部塊 設(shè)置標(biāo)簽<<label_name>>可以為循環(huán)設(shè)置標(biāo)
29、簽declareid number:=1;beginloop dbms_output.put_line('循環(huán)次數(shù)-'|id);id :=id+1;if id=10 then goto a;end if;end loop;<<a>>dbms_output.put_line('跳出循環(huán)');end;1. goto語句無條件地跳轉(zhuǎn)到一個標(biāo)號所在的位置。2. 標(biāo)號的定義在一個語句塊中必須是唯一的。其語法如下:goto <標(biāo)號名> goto語句將控制權(quán)交給帶有標(biāo)號的語句或語句塊。3. 為了保證goto語句的使用不會引起程序的混亂,達(dá)夢
30、數(shù)據(jù)庫對goto語句的使用有下列限制:(1) goto語句不能跳入一個if語句、循環(huán)語句或下層語句塊中; (2) goto語句不能從一個異常處理器跳回當(dāng)前塊,但是可以跳轉(zhuǎn)到包含當(dāng)前塊的上層語句塊。無返回查詢結(jié)果集create or replace procedure p_sel_result(usertag byte) as beginif (usertag = 1) thenselect * from systables where id > 1000; elseselect * from systables where id < 1000;end if;end;在存儲過程中如果
31、執(zhí)行了不帶into子句的查詢語句,系統(tǒng)將在調(diào)用結(jié)束時將該查詢結(jié)果集返回給調(diào)用者。當(dāng)出現(xiàn)多個查詢語句時,只有最后被執(zhí)行的查詢語句的查詢結(jié)果集被返回。下面給出一個例子:create or replace procedure p_sel_result(usertag byte) as beginif (usertag = 1) thenselect * from systables where id > 1000; elseselect * from systables where id < 1000;end if;end;無數(shù)據(jù)類型引用%type和%rowtype擴(kuò)展了存儲過程類型,方
32、便用戶使用。1. %type在許多情況下,存儲過程變量可以被用來處理存儲在數(shù)據(jù)庫表中的數(shù)據(jù)。在這種情況下,變量應(yīng)該擁有與表列相同的類型。2. %rowtype在存儲過程中將一個記錄聲明為具有相同類型的數(shù)據(jù)庫行的作法也很常見。下例子中使用的表t的結(jié)果如下: create table t(id int, name varchar(10); insert into t values(1, '達(dá)夢數(shù)據(jù)庫'); commit;1. %type例如表t中有個字段name類型為varchar(20)。對應(yīng)的在存儲過程中,可以聲明一個變量: delcare v_name varchar(20)
33、; 但是如果t中的name字段定義發(fā)生了變化,比如變?yōu)関archar(100)。那么存儲過程中的變量v_name也要做相應(yīng)修改為delcare v_name varchar(100); 如果您有很多的變量以及存儲過程代碼,這種處理可能是十分耗時和容易出錯的。為了解決這個問題,我們提供了%type類型定義方法。%type可以附加在表列或者另外一個變量上,并返回其類型。例如: declare v_name t.name % type; 通過使用%type,v_name將擁有t表的name列所擁有的類型;如果表t的name列類型定義發(fā)生變化,v_name的類型也隨之自動發(fā)生變化,而不需要用戶手動修改
34、。%type的各種使用方法: declare v_name t.name % type; v_str v_name % v_name; v_id int; v_id2 v_id % type; 使用%type是非常好的編程風(fēng)格,因為它使得過程更加靈活,更加適應(yīng)對于數(shù)據(jù)庫定義的變更。2. %rowtypedm提供了%rowtype運(yùn)算符使得這樣的處理更為方便。類似與%type,%rowtype將返回一個基于表定義的運(yùn)算類型。例如,像下面這樣的聲明declare v_trec t % rowtype; 將定義一個記錄,該記錄中的字段將與表t中的列相對應(yīng)。v_trec變量會擁有下面這樣的結(jié)構(gòu): (i
35、d int, name varchar(10)) 與%type類似,如果表定義改變了,那么%rowtype定義的變量也會隨之改變。%rowtype的使用舉例如下: create or replace procedure p as declare v1 t % rowtype; c1 cursor; begin open c1 for select * from t; fetch c1 into v1; print v1.id; print v1.name; end;無記錄類型在oracle中,如果使用記錄類型,對于記錄內(nèi)每個字段,可以指定也可以使用%type和%rowtype動態(tài)指定。1. 直
36、接指定字段類型假定表定義為 create table mytable ( v_vid integer, v_vname varchar2(10), v_address varchar2(100) ); 我們定義一個記錄類型: type myrecord is record ( v_vid integer, v_vname varchar2(10), v_address varchar2(100) ); 在使用自定義記錄類型時,每個字段類型和表字段類型相同,并且類型已經(jīng)指定,執(zhí)行的時候性能更好。缺點是,表字段類型修改后,還需要修改記錄字段類型,有時候可能會忘記,從而出現(xiàn)錯誤。2. 使用%type
37、和%rowtype動態(tài)指定如果使用%type和%rowtype動態(tài)指定記錄字段類型: type myreord is record ( v_vid mytable.v_vid%type, v_vname mytable.v_vname%type, v_address mytable.v_address%type ); 或myrecord mytable%rowtype ;1. 記錄類型定義定義記錄類型的語法是: type record_type is record( field1 type1, field2 type2, fieldn typen);這里,record_type是記錄類型名,f
38、ield1到fieldn是記錄字段名,type1到typen是記錄字段類型。聲明記錄類型以后,就可以用記錄類型定義變量。上面的變量聲明可以修改為: declare type t_rec is record( id int, name varchar(10); v_rec1 t_rec; v_rec2 t_rec; 上面的例子,先定義了記錄類型t_rec,然后定義了t_rec類型的兩個變量v_rec1和v_rec2。2. 記錄賦值記錄類型可以單獨對記錄中的字段賦值,也可以將記錄作為一個整體進(jìn)行賦值??梢允褂命c標(biāo)記引用一個記錄中的字段(記錄名.字段名),下面例子中對t_rec類型的id字段和nam
39、e字段分別進(jìn)行賦值操作: declare type t_rec is record( id int, name varchar(10); v_rec1 t_rec; v_rec2 t_rec; beginv_rec1.id := 100; v_rec1.name:= '雷鋒' end; 也可以將一個記錄直接賦值給另外一個記錄。記錄賦值,將記錄中的字段分別賦值給對應(yīng)的字段。下面的例子將v_rec1記錄賦值給v_rec: declare type t_rec is record( id int, name varchar(10); v_rec1 t_rec; v_rec2 t_re
40、c; beginv_rec1.id := 100; v_rec1.name:= '雷鋒' v_rec2 := v_rec1; end; 如果要進(jìn)行記錄賦值,那么這兩個記錄必須是相同類型的。如果記錄類型不相同,哪怕是記錄中的字段類型定義完全一致,系統(tǒng)也會報錯。下面的例子,不是一個合法的記錄賦值操作: declare type t_rec is record( id int, name varchar(10); type t_rec_new is record( id int, name varchar(10); v_rec1 t_rec; v_rec2 t_rec_new; be
41、ginv_rec1.id := 100; v_rec1.name:= '雷鋒' v_rec2 := v_rec1; end;也可以使用select語句對記錄賦值。這將會從數(shù)據(jù)庫中檢索出數(shù)據(jù)并將該數(shù)據(jù)存儲到記錄中。記錄中的字段應(yīng)該與查詢選擇結(jié)果列表中的字段相匹配。舉例如下: declare type t_rec is record( id int, name varchar(10); v_rec1 t_rec; beginselect id, name into v_rec1 from t where id = 1; print v_rec1.id; print v_rec1.n
42、ame; end;無2.1.5 觸發(fā)器功能oracleoracle差異create tiggercreate or replace tigger觸發(fā)器名 觸發(fā)時間 觸發(fā)事件on操作對象for each rowbeginpl/sql語句endcreate or replace tigger觸發(fā)器名 觸發(fā)時間 觸發(fā)事件on操作對象for each rowbeginpl/sql語句end無觸發(fā)器狀態(tài)修改alter trigger 觸發(fā)器名 disable/enablealter trigger 觸發(fā)器名disable/enable無drop triggerdrop trigger 觸發(fā)器名drop trigger 觸發(fā)器名無dml事件支持insert、delete、updateinsert、delete、update無ddl事件支持create、alter、dr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技前沿匯報助力研發(fā)項目進(jìn)展管理
- 2025至2030年中國電腦式滾輪機(jī)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國甘草提取液數(shù)據(jù)監(jiān)測研究報告
- 小區(qū)弱電出租合同范本
- 油漆加工承攬合同范本
- 居民住宅裝修合同范本
- 2025年復(fù)雜精密鍛模和沖模項目發(fā)展計劃
- 止咳化痰類藥物相關(guān)項目投資計劃書
- 木樓梯設(shè)計中的施工可行性分析考核試卷
- 期刊出版與學(xué)術(shù)期刊的品牌戰(zhàn)略考核試卷
- 小針刀療法教學(xué)課件
- 打造寫生基地方案
- 寫作:廣告詞-【中職專用】高二語文高效課堂(高教版2023·職業(yè)模塊)
- 爆發(fā)性心肌炎護(hù)理查房課件
- 銷售人員人才畫像
- (完整版)建筑工程技術(shù)畢業(yè)論文
- 鑫宇鋅合金模具設(shè)計標(biāo)準(zhǔn)
- 整理我的小書桌(課件)小學(xué)勞動二年級通用版
- 森林撫育施工組織設(shè)計
- 切削刀具及其材料課件
- 山東省義務(wù)教育地方課程安全教育課程實施指導(dǎo)意見
評論
0/150
提交評論