視圖、存儲(chǔ)過(guò)程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第1頁(yè)
視圖、存儲(chǔ)過(guò)程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第2頁(yè)
視圖、存儲(chǔ)過(guò)程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第3頁(yè)
視圖、存儲(chǔ)過(guò)程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第4頁(yè)
視圖、存儲(chǔ)過(guò)程、函數(shù)、游標(biāo)與觸發(fā)器介紹_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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ò)程、函數(shù)、游標(biāo)與觸發(fā)器學(xué)習(xí)目標(biāo)掌握使用視圖掌握使用存儲(chǔ)過(guò)程掌握使用自定義標(biāo)量函數(shù)、表值函數(shù)掌握使用游標(biāo)掌握使用觸發(fā)器-、視圖的定義視圖由SELECT查詢語(yǔ)句所定義的一個(gè)虛擬 表,是查看數(shù)據(jù)的一種非常有效的方式, 同真實(shí)的數(shù)據(jù)表一樣,視圖也包含一系列 帶有名稱的數(shù)據(jù)列和數(shù)據(jù)行,但視圖與數(shù) 據(jù)表又有很大的不同,視圖中的數(shù)據(jù)并不 真實(shí)的存在于數(shù)據(jù)庫(kù)中。1.1、 視圖的優(yōu)點(diǎn)簡(jiǎn)化查詢提供一種安全機(jī)制視圖掩碼(對(duì)長(zhǎng)的字段重新命名)數(shù)據(jù)即時(shí)更新1.2、 視圖的分類 標(biāo)準(zhǔn)視圖:使用最頻繁的視圖,不存儲(chǔ)任 何數(shù)據(jù),不占用任何存儲(chǔ)空間 索引視圖:擁有唯一群集索引的視圖被稱 為索引視圖,它存儲(chǔ)真實(shí)索引數(shù)

2、據(jù),占用 一定的存儲(chǔ)空間。 分區(qū)視圖:現(xiàn)在用分區(qū)表進(jìn)行替代1.2.K標(biāo)準(zhǔn)視圖-創(chuàng)建帶仃部門(mén)編號(hào)的emp視圖SELECT dbo.EMP.EMPNO, dbo.EMP.ENAME, dbo.EMP.JOB, dbo.EMP.MGR, dbo.EMP.HIREDATE, dbo.EMP.SAL, dbo.EMP.COMM, dbo.EMP.DEPTNO,dbo.DEPT.DNAMEFROM dbo.EMP INNER JOINdbo.DEPT ON dbo.EMP.DEPTNO = dbo.DEPT.DEPTNO -通過(guò)視圖修改數(shù)據(jù)update v_emp_with_deptname set sa

3、l=800 v/here empno=7369注意:(1)可以修改基于兩個(gè)或兩個(gè)以上基表的視圖,但是每次修改只能影響一 個(gè)基表,不能同時(shí)修改。(2)不能修改通過(guò)計(jì)算得到的列、有內(nèi)置函數(shù)的列以及有聚合函數(shù)的列1.2.2,索引視圖創(chuàng)建各部門(mén)人數(shù)的視圖drop view v_countOfDept gocreate view v_countOfDept WITH SCHEMABINDING asSELECT EMP.deptno,count_big(*) empcountFROM dbu.EMPgroup by emp.deptno創(chuàng)建聚合索引CREATE UNIQUE CLUSTERED INDE

4、X Lv_countOfDept_deptnoON v_countOfDept(deptno)注意:(1)創(chuàng)建索引視圖,必須擁有唯聚合索引,如果創(chuàng)建聚合索引,帶有聚合函數(shù)的基礎(chǔ)視 圖必須使用WITH SCHEMABINDING , group by以及count_big函數(shù)(2)使用索引視圖能提高數(shù)據(jù)庫(kù)效率(3)如果視圖引用任何.確定性函數(shù),則不能在視圖上創(chuàng)建聚集索引1.2.3, 分區(qū)視圖-創(chuàng)建分區(qū)視圖-將表進(jìn)行行分割,emp表分解為emp1和emp2 select * into emp1 from emp where empno=7782 goCREATE VIEWv emp with 1

5、and 2ASSELECT * FROM emp1UNION ALLSELECT * FROM emp2注意:分區(qū)視圖在sqlserver2005M被分區(qū)表替代新建說(shuō)由a a 國(guó)& ZD 二 g rployttE tl2 23 疝。,5年9ffl w 王回IMHH31ATION 50(二、存儲(chǔ)過(guò)程1.3、在Management Studio中倉(cāng)Li建視圖3 C i)n,nRnAftriH_oCMIMPOATIOM_SCX IMFOMUHON_SO( IKFOWAnUNR IMFOFWAnON.SCM存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)系統(tǒng)中封裝的代碼模塊, 它采用T-SQL語(yǔ)言來(lái)編寫(xiě),經(jīng)編譯后存放在 數(shù)據(jù)庫(kù)服務(wù)器

6、中,具有很好的可重用性, 可用于高效地完成某些操作存儲(chǔ)過(guò)程可以充分利用服務(wù)器的高性能運(yùn) 算能力,無(wú)需把大量的結(jié)果集送往客戶端 進(jìn)行處理,大大減少了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)拈_(kāi) 銷,提高了應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)的速度和 效率2.1、 使用存儲(chǔ)過(guò)程的好處與特點(diǎn)存儲(chǔ)過(guò)程是已編譯過(guò)的,并在服務(wù)器上注冊(cè)和保存的代碼 模塊,因面比一般的程序語(yǔ)句執(zhí)行起來(lái)速度更快,同時(shí)減 少了網(wǎng)絡(luò)流量,節(jié)省了大量可間和數(shù)據(jù)流塞。存儲(chǔ)過(guò)程可以使用控制語(yǔ)句和變量,并且在一個(gè)存儲(chǔ)過(guò)程 中可以調(diào)用其他存儲(chǔ)過(guò)程,使得用戶可以進(jìn)行模塊化程序 龍計(jì),大大提嵩了用戶設(shè)計(jì)愈序的效率。存儲(chǔ)過(guò)程具有安全特性和所有權(quán)鏈接,可以執(zhí)行所有的權(quán)馥翳鼠翻驪藕麻儲(chǔ)過(guò)程的權(quán)限

7、但不擁有存儲(chǔ)過(guò)程可以提高應(yīng)用程序的安全性,防止SQL嵌入式攻 擊存儲(chǔ)過(guò)程可以允許代碼綁定,引用當(dāng)前不存在的對(duì)象,這 些對(duì)象僅在存儲(chǔ)過(guò)程執(zhí)行時(shí)存在2.2、 存儲(chǔ)過(guò)程的分類用戶自定義的存儲(chǔ)過(guò)程:最主栗的存儲(chǔ)過(guò) 程系統(tǒng)存儲(chǔ)過(guò)程:sp_前綴,系統(tǒng)預(yù)定義擴(kuò)展存儲(chǔ)過(guò)程:保存在DLL動(dòng)態(tài)鏈接庫(kù)中并 從動(dòng)態(tài)鏈接庫(kù)中執(zhí)行的C+程序代碼,用于 擴(kuò)展SQLSERVER2005,性育旨,以字符xp_開(kāi) 頭,通常與其它系統(tǒng)存儲(chǔ)過(guò)程一起使用虛 過(guò)程序集調(diào)用。2.3、 存儲(chǔ)過(guò)程的設(shè)計(jì)規(guī)則CREATE PROCEDURE定義本身可包/舌除下歹” CREATE語(yǔ)句以外的任何數(shù)量和類型的SQL語(yǔ) 句,存儲(chǔ)過(guò)程中的任意地方都不能使

8、用下列語(yǔ)句:C CREATE RULECREATE DEFAULTCREATE FUNCTIONCREATE TRIGGERCREATE PROCEDURECREATE VIEWUSE DATABASE2.4、 創(chuàng)建存儲(chǔ)過(guò)程的語(yǔ)法CREATE PROC | PROCEDURE schema_name. procedure_name parameter type_schema_name. data_typeOUTPUT 5.nAS 2.5、 建和使用存儲(chǔ)過(guò)程-創(chuàng)建不帶參數(shù)的存儲(chǔ)過(guò)程it exists(select name from sysobjects where name二pro_name,

9、and type=*p*) drop procedure pro_nameGocreate procedure pro_name asdeclare v_name varchar(10),v_sal decimal(10,2)beginbegin tryselect v_name=ename.v_sal=sal from emp where empno=7369if v_salv_name varchar(10),(3v_sal decimal(10,2)beginbegin tryselect v_name=ename,(5)v_sal=sal from emp where empno=(5

10、)vempno if (2v_sal2500print I:資超過(guò)2500elseprint資少于2500end trybegin catchprint 鋪誤號(hào):l+cast(error as varchar(10)print 錯(cuò)誤內(nèi)容:+error_message()end catchend使用存儲(chǔ)過(guò)程pro_name 7369一創(chuàng)建帶檢出參數(shù)的存儲(chǔ)過(guò)程if exists(select name from sysobjects where name=*pro name* and type=p*)drop procedure pro_nameGocreate procedure pro_nam

11、e vempno int,v_name varchar(13) output,v_sal decimal。0,2) out asbeginbegin tryselect v_name=ename.v_sal=sal from emp where empno=vempnoend trybegin catchprint錯(cuò)誤 * J :,*cast(error as varchar(10)print 錯(cuò)誤面 容:+error_message()end catchend-使用存儲(chǔ)過(guò)程declare v_name varchar(10) .v_sal decimal。0.2)exec pro_name

12、7369 ,v_name output.v_sal outputif v_sal2500print,I.資超過(guò)2500elseprint,I:資少于2500go2.6存儲(chǔ)過(guò)程的執(zhí)行過(guò)程和重編譯存儲(chǔ)過(guò)程在第1次執(zhí)行時(shí),要經(jīng)過(guò)語(yǔ)法分析、解析、編譯和執(zhí)行共4個(gè)階段, 當(dāng)添加新的索引或更期某些列數(shù)值之后,存儲(chǔ)過(guò)程有不自動(dòng)執(zhí)行優(yōu)化, 可以強(qiáng)制徐卜,次啟動(dòng)服霧器前次編譯該春儲(chǔ)過(guò)程,以更新原有的寂行計(jì)劃??梢杂腥N方式實(shí)現(xiàn):- -1使用spjecompHe系統(tǒng)存儲(chǔ)過(guò)程 exec sp_recompile hh- 2創(chuàng)建存儲(chǔ)過(guò)程時(shí)增加with recompile選項(xiàng) ALTER procedure dbo.h

13、h with recompile as begin select county) ,count from aa end- 3執(zhí)行重新編譯 exec hh with recompile2.7 加密存儲(chǔ)過(guò)程-使用with encrypVon語(yǔ)句對(duì)存儲(chǔ)過(guò)程進(jìn)行加密ALTER procedure dbo.hh with recompile,encryption as begin select count(*) count, from aa end2.8 使用擴(kuò)展存儲(chǔ)過(guò)程使用外圍配置器配置,如下圖:敲入 exec xp_cmdshell dir c:u結(jié)果是列出c盤(pán)而具體內(nèi)容相干的還有幾個(gè)都是以xp_開(kāi)

14、頭,具體可以查詢msdn文檔。-比如使用xpjileexist判斷文件是否存在use masterdeclare ret intexec xp_fileexistHeAtempweb.configret outputprint ret三、用戶自定義函數(shù)用戶自定義函數(shù)是接受參數(shù)、執(zhí)行操作(例如復(fù) 雜計(jì)算)并將操作結(jié)果以值的形式返回的子程序。 返回值可以是單個(gè)標(biāo)量值或結(jié)果集。SQL Server 2005支持3木中類型的Transact-SQL用 戶自定義函數(shù):標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)和多語(yǔ) 句表值函數(shù)。在SQL Server中使用用戶自定義函數(shù)有以下優(yōu)點(diǎn): 允許模塊化程序設(shè)計(jì)。執(zhí)行速度更快。減少網(wǎng)

15、絡(luò)流量。3.1創(chuàng)建用戶自定義函數(shù)(1)標(biāo)量函數(shù)標(biāo)量型函數(shù)返回 個(gè)確定類型的標(biāo)量值其返回值類型為除TEXT、NTEXT、IMAGE、CURSOR. TIMESTAMP、table夕卜的其它數(shù)據(jù)類型。函數(shù)體語(yǔ)句 定義在BEGIN-END語(yǔ)句內(nèi),其中包含了可以返回值的TransactSQL命令創(chuàng)建標(biāo)量函數(shù)的語(yǔ)法如下:CHtA 11 FUNC I ION schema_name. J tunction_name( parameter_name AS type_schema_name. parameter_data_type =default -.n)RETURNS return_data_typeWI

16、TH ,.n AS一BEGINfunction_bodyRETURN scalar expressionEND其中各參數(shù)的角義如下。 schema_name用戶仃定義函數(shù)所屬的架構(gòu)的名稱。 function_name用戶rT定義函數(shù)的名稱。 parameter_name用戶門(mén)定2函數(shù)的參數(shù)。type_schema_name. parameter_data_type參藪的數(shù)據(jù)滅型及其所屈的架構(gòu),前者為可選項(xiàng)。=default 參數(shù)的默認(rèn)值。 return_data_type用戶?I定義標(biāo)義函數(shù)的返回值。 function_body函數(shù)體,指定一系列定義函數(shù)值的Transact-SQL語(yǔ)句。 sc

17、alar_expression指定標(biāo)定函數(shù)返回的標(biāo)的值。 指定函女將具有以卜.一個(gè)或多個(gè)選項(xiàng),共有兩個(gè):ENCRYPTION指示數(shù)據(jù)庫(kù)引擎對(duì)包含CREATE FUNCTION語(yǔ)句文本的目錄視圖列進(jìn)行加密。SCHEMABINDING指定將函數(shù)綁定到其引用的數(shù)據(jù)庫(kù)對(duì)象。創(chuàng)建和使用標(biāo)收函數(shù)創(chuàng)建函數(shù) if exists(select name from sysobjectswhere name=*get_salary_by_deplno*)drop function get_salary_by_deptno gocreate function get_salary_by_deptno(v_dept_n

18、o int)Returns int as begindeclare v_sum intselect v sum=sum(sal) from empwhere deptno = v_dept_noif(a)error0beginreturn -1 -其中返回-1示函出錯(cuò)了 endreturn v_sum end使用函數(shù)print dbo.get_salary_by_deptno(10)(2)內(nèi)嵌表值函數(shù)內(nèi)聯(lián)表值型函數(shù)以表的形式返回一個(gè)返回值,即它返回的 是一個(gè)表內(nèi)聯(lián)表值型函數(shù)沒(méi)有由BEGIN-END語(yǔ)句括起來(lái) 的函數(shù)體。其返回的表由一個(gè)位于RETURN子句中的 SELECT命令段從數(shù)據(jù)庫(kù)中篩選出

19、來(lái)。內(nèi)聯(lián)表值型函數(shù)功 能相當(dāng)于一個(gè)參數(shù)化的視圖。創(chuàng)建內(nèi)嵌表值函數(shù)的語(yǔ)法如下:CREATE FUNCTION schema_name. function_name( parameter_name AS type_schema name. parameter data type=default ,.n)RETURNS TABLEWITH ,.n ASRETURN ( select_stmt)其中各參數(shù)的含義如下。schema_name function_nameparameter_name type_schema_name.parameter_data_type = default vfuncti

20、on_option的含義與標(biāo)量函數(shù)中的各 參數(shù)相同。 TABLE指定表值函數(shù)的返回值為表。 select_stmt定義內(nèi)嵌表值函數(shù)的返回值的單個(gè)SELECT 語(yǔ)句。使用內(nèi)嵌表值函數(shù):drop function f_get_emp goCREATE FUNCTION f_get_emp()RETURNS table asRETURN(select * from emp)注意:返回table數(shù)據(jù)類型的用戶定義函數(shù)實(shí)際上 是視圖,可以對(duì)返11的數(shù)據(jù)直接更新,并影響基 表。(3)多語(yǔ)句表值函數(shù)多聲明表值型函數(shù)可.以看作標(biāo)量型和內(nèi)聯(lián)表值型函數(shù)的結(jié)合體。它的 返回值是一個(gè)表,但它和林量型函數(shù)一樣有一個(gè)用B

21、EGIN-END語(yǔ)句 括號(hào)來(lái)的函數(shù)體,返回值的衣中的數(shù)據(jù)是由函數(shù)體中的語(yǔ)句插入的。 山詼可見(jiàn),爸可以進(jìn)行多次在詢,對(duì)數(shù)據(jù)進(jìn)行多次篩選與合并,彌補(bǔ) 了內(nèi)聯(lián)表值型函數(shù)的不足。創(chuàng)建多語(yǔ)句表值函數(shù)的語(yǔ)法如下:CREATE FUNCTION schema_name. function_name(S)pArAmAtftr_namR AS type schema name. 1 parameter data type=default 7.n )一RETURNS return_variable TABLE WITH ,.n ASBEGINfunction_bodyRETURNEND其中各參數(shù)的含義如下。sch

22、ema_name function_name parameter_nametype_schema_name. parameter_data_typ = default vfunction_option的含義與標(biāo)量函數(shù)中的各參 數(shù)相同。 TABLE指定表值函數(shù)的返回值為表。在多語(yǔ)句表值函數(shù)中, return_variable是TABLE變量,用于存儲(chǔ)和匯總應(yīng)作為 函數(shù)值返回的行。 定義表數(shù)加;類應(yīng)。表聲明包含列定義和列約束(或表約束)。(3) function_body函數(shù)體,指定一系列定義函數(shù)值的TransactSQL語(yǔ)句。使用多語(yǔ)句表值函數(shù): drop function f_get_emp

23、goCREATE FUNCTION f_get_emp() RETURNS abc table(empno int) as begininsert into abc select empno from emp returnendselect * from dbo.f_get_emp()3.2修改刪除用戶自定義函數(shù)使用ALTER FUNCTION語(yǔ)句可以修改用戶 自定義函數(shù)的定義,ALTER FUNCTION 句的語(yǔ)法及參數(shù)與CREATE FUNCTION的 語(yǔ)法及參數(shù)類似。使用DROP FUNCTION語(yǔ)句可以從當(dāng)前數(shù) 據(jù)庫(kù)中刪除一個(gè)或多個(gè)用戶自定義函數(shù)。33定義函數(shù)與存儲(chǔ)過(guò)程的 區(qū)別存儲(chǔ)過(guò)程

24、與函數(shù)主要區(qū)別于返回值方面:(1)存儲(chǔ)過(guò)程可以使用output參數(shù)返回多個(gè)值,而函數(shù)只可以返叵| 個(gè) 加,木可以使南output參數(shù)(2)關(guān)于返回結(jié)果集方面的區(qū)別:存儲(chǔ)過(guò)程中雖然沒(méi)有return語(yǔ)句,但是也可以返回結(jié)果集。比女II: create procedure sp1asbeginselect name, fid Jk from table_1print 111select testname ,fid from table_2end這個(gè)結(jié)果,可.以被被使用:insert into table_3(name, fid_fk) exec sp1對(duì)廠自定義函數(shù),它必須指定定義為返回值為tabl

25、e類型的數(shù)據(jù)v.。且在代班顯式的網(wǎng)該table 中insert:或者,只是制定返固他為table類型,彳、指定return而對(duì)尊變狀,匕接return該表.即:create function fn1()returns tableasreturn select fid. testname from table_2或齊create function fn1()returns v table(fid int primary key not null,testname nchar(10)asbegininsert into v select fid,testname from table_2End使用

26、insert into table3 select * from fn1 ()它們的區(qū)別:(1)前者是返回杳詢的結(jié)果集合,只是作為一系列功能的副產(chǎn)品:而后者,就是為了返回值而創(chuàng)建的。(2)前若返回俏不能被仃接引用:而是必須被使川為execspl或齊insert into table的形式使用.后者 這回值可以黛直接引用.四、游標(biāo)在數(shù)據(jù)庫(kù)中,游標(biāo)是一個(gè)十分重要的概念。 游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄 的結(jié)果集中每次提取一條記錄的機(jī)制。當(dāng)決定對(duì)結(jié)果集進(jìn)行處理時(shí),必須聲明一 個(gè)指向該結(jié)果集的游標(biāo)。4.1、 游標(biāo)的分類MS SQL SERVER支持三種類型的游標(biāo): Transact_SQL游標(biāo),

27、API服務(wù)器游標(biāo)和客 戶游標(biāo)。一其中Transact_SQL游標(biāo)就是我們同樣使用的游標(biāo) 一Transact_SQL 游標(biāo)是由DECLARECURSOR語(yǔ)法定義、主要用在Transact_SQL腳本、存儲(chǔ)過(guò)程和觸發(fā)器中。4.2、 Transact SQL 游標(biāo)每一個(gè)游標(biāo)必須仃四個(gè)組成部分這四個(gè)關(guān)鍵部分必須符合下面的順序:1 .DECLARE 游標(biāo)2.OPEN游標(biāo)3 .從一個(gè)游標(biāo)中FETCH佶息4 .CLOSE 或DEALLOCATE 游標(biāo)通常我們使用DECLARE來(lái)聲明一個(gè)游標(biāo)聲明一個(gè)游標(biāo)主要包括以下 主要內(nèi)容:游標(biāo)名字?jǐn)?shù)據(jù)來(lái)源(表和列)選取條件屬性(僅讀或可修改)其語(yǔ)法格式如下:DECLARE

28、 cursor_name INSENSITIVE SCROLL CURSORFOR select statementFOR READ ONLY | UPDATE OF column_name ,.n其中: Acursor name指游標(biāo)的名字。INSENSITIVE表明MS SQL SERVER會(huì)將游標(biāo)定義所選取出來(lái)的數(shù)據(jù)記錄存放 在,臨時(shí)表內(nèi)(建立在tempdb數(shù)據(jù)庫(kù)卜)。對(duì)該游標(biāo)的讀取操作 皆山臨時(shí)表來(lái)應(yīng)答。因此,對(duì)基本表的修改并不影響游標(biāo)提取的 數(shù)據(jù),崗游標(biāo)不會(huì)隨著基本表內(nèi)容的改變而改變,同時(shí)也無(wú)法通 過(guò)游林米更新基本表。收律不使用該保留字,那么對(duì)基本表的更 新、刪除甄春反映到游標(biāo)市。S

29、CROLI表明方的提取操作(如FIRST、 LAST、 PRIOR. NEXT、 RELATIVE.ABSOLUTE)都可用如果。使用該保留字,那么只能進(jìn)行NEXT提取操作、由 此可見(jiàn).SCROLL極大地增加了提取數(shù)據(jù)的是活性,可以隨意讀取結(jié)果集中的任 行數(shù)據(jù)汕泉,而不必關(guān)閉再重開(kāi)游標(biāo)。select_statement是定好吉果集的SELECT語(yǔ)句。READ ONLY&明不允許游標(biāo)內(nèi)的數(shù)據(jù)被更新盡管在缺省狀態(tài)卜.游標(biāo)是允許更新的。UPDATE OF column name,.nl定義在游標(biāo)中可被修改的列,如果不指出要更新的列,那么所仃的列都將被更新,-卜.面是一個(gè)游標(biāo)的例子-1DECLARE

30、tempcursor CURSOR FOR select sal,comm from emp where sal1000declare sal decimal。0,2),comm intbegin-2open tempcursor;-3fetch next from tempcursor into sal,commprint,資為:+cast(sal as varchar(10)print,補(bǔ)助為:+cast(comm as varchar(10)-4close tempcursorDEALLOCATE tempcursorEnd- 在這里例子中明顯有一處缺陷,就是只能取到一條記錄- F面增加

31、循環(huán)和判斷DECLARE tempcursor CURSOR FOR select sal,comm from emp where sal1000declare sal decimal。0,2),comm intbeginopen tempcursor;fetch next from tempcursor into sal,commwhile (g(5)fetch_status=0beginprint 工資為:+cast(sal as varchar(10)print 補(bǔ)助為 1+casXcomm as varchar(10)fetch next from tempcursor into sa

32、l,commendclose tempcursorDEALLOCATE tempcursorEnd- 注意:fetch_status是一個(gè)游標(biāo)專用的系統(tǒng)函數(shù),用于表示是否取到值五、觸發(fā)器Microsoft SQL Server 2005系統(tǒng)提供了兩 種強(qiáng)制業(yè)務(wù)邏輯和數(shù)據(jù)完整性的機(jī)制,即 約束技術(shù)和觸發(fā)器技術(shù)。5.1、 觸發(fā)器的作用觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,它在特定 語(yǔ)言事件發(fā)生時(shí)自動(dòng)執(zhí)行,通常用于實(shí)現(xiàn) 強(qiáng)制 業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性。觸發(fā)器支持嵌套,最多可以嵌套32層5.2、 觸發(fā)器的分類DML觸發(fā)器:DML觸發(fā)器是當(dāng)數(shù)據(jù)庫(kù)服務(wù) 器中發(fā)生數(shù)據(jù)操作語(yǔ)言(DML)事件時(shí)要 執(zhí)行的操作。DML事件包括

33、對(duì)表或視圖發(fā) 出的UPDATE、INSERT或DELETE語(yǔ)句 C AFTER觸發(fā)器:指SQL語(yǔ)句成功執(zhí)行之后觸發(fā) OINSTEAD OF觸發(fā)器。DDL觸發(fā)器521、DML AFTER觸發(fā)器DML AFTER觸發(fā)器是當(dāng)數(shù)據(jù)庫(kù)服務(wù)器中發(fā) 生數(shù)據(jù)操作語(yǔ)言(DML)事件時(shí)要執(zhí)行的 操作,成功執(zhí)行之后觸發(fā)。特別注意:SQLServer觸發(fā)器中可以擁有事 務(wù)回滾功能,當(dāng)有錯(cuò)誤發(fā)生時(shí),執(zhí)行 rollback,這樣導(dǎo)致DML失效。. DML AFTER角蟲(chóng)發(fā)器的語(yǔ)法創(chuàng)建DML觸發(fā)器的語(yǔ)法格式為:CREATE TRIGGERschema_name . trigger_nameON tableFOR | AFTERINSERT , UPDATE , DELETE ASsql_statement其中各參數(shù)的含義如下。(1) schema_nameDML觸爰器所屬架構(gòu)的名稱。(2) trigger_name觸發(fā)器而名稱。(3) table對(duì)其執(zhí)行DML觸發(fā)器的表。(4) AFTER指定DML觸發(fā)器僅在觸發(fā)SQL語(yǔ)句中指定的所有操作都 已成功執(zhí)行時(shí)才被激發(fā)。如果寫(xiě)FOR則默認(rèn)為AFTER(5

溫馨提示

  • 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)論