




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫應(yīng)用技術(shù)SQL Server 2012主編:屈武江 霍艷飛 張 健新世紀(jì)應(yīng)用型高等教育計算機類課程規(guī)劃教材SQL SERVER 2012SHUJUKU YINGYONG JISHU第7章Transact-SQL 編程7.1 Transact-SQL 語言1Transact-SQL 語言的特點(1)Transact-SQL 語言集數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言、數(shù)據(jù)控制語言和附加語言元素為一體。其中附加語言元素不是標(biāo)準(zhǔn)SQL 語言的內(nèi)容,但是它增強了用戶對數(shù)據(jù)庫操作的靈活性和簡便性,從而增強了程序的功能。(2)Transact-SQL 語言有統(tǒng)一的語法結(jié)構(gòu),兩種使用方式,即聯(lián)機交互式和嵌入高級
2、語言的使用方式。統(tǒng)一的語法結(jié)構(gòu)使Transact-SQL 語言可用于所有用戶的數(shù)據(jù)庫活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)管理員以及其他類型的終端用戶。(3)Transact-SQL 語言是高度非過程化的語言,不要求用戶指定對數(shù)據(jù)的存放方法,所有的Transact-SQL 語言使用查詢優(yōu)化器,用以指定數(shù)據(jù)以最快速度存取的手段。Transact-SQL 語言的操作對象是集合,所有的SQL 語句接收集合作為輸入,返回集合作為輸出。7.1.1 Transact-SQL 語言的特點和分類7.1 Transact-SQL 語言2Transact-SQL 語言的分類7.1.1 T
3、ransact-SQL 語言的特點和分類(1)數(shù)據(jù)定義語言(Data Definition Language,DDL)(2)數(shù)據(jù)操縱語言(Data Manipulation Language,DML)(3)數(shù)據(jù)控制語言(Data Control Language,DCL)(4)附加語言元素7.1 Transact-SQL 語言使用Transact-SQL 語言對數(shù)據(jù)庫對象、數(shù)據(jù)庫中的數(shù)據(jù)以及用戶或角色的權(quán)限進(jìn)行操作,需按照一定的約定進(jìn)行,Transact-SQL 語言的語法約定如下:(1)|(豎線):分隔括號或大括號中的語法項,只能使用其中一項。(2)(方括號):可選語法項,不要鍵入方括號。(
4、3)(大括號):必選語法項,不要鍵入大括號。(4),n:提示前面的項可以重復(fù)n 次,各項之間以逗號分隔。(5)n:提示前面的項可以重復(fù)n 次,各項之間以空格分隔。(6);:可選的Transact-SQL 語句終止符,不要鍵入方括號。(7):語法塊的名稱,此約定用于對可在語句中的多個位置使用的過長語法段或語法單元進(jìn)行分組和標(biāo)記。(8):=:可使用的語法塊的每個位置有括在尖括號內(nèi)的標(biāo)簽指示:。7.1.2 Transact-SQL 語法約定7.2 常量和變量常量也稱為字面值或標(biāo)量值,是表示一個特定數(shù)據(jù)值的符號,其值在程序運行過程中不改變。常量包括整型常量、實型常量、字符串常量、日期型常量、貨幣型常量
5、、二進(jìn)制常量、十進(jìn)制整型常量、十六進(jìn)制整型常量等。常量的格式取決于它所表示的值的數(shù)據(jù)類型,見表7-1。7.2.1 常量7.2 常量和變量1全局變量全局變量由系統(tǒng)提供且預(yù)先聲明,通過在名稱前加兩個“”符號區(qū)別于局部變量。用戶只能使用全局變量,不能對它們進(jìn)行修改。全局變量的作用范圍是整個SQL Server 系統(tǒng),任何程序都可以隨時調(diào)用它們。SQL Server 常用全局變量見表7-2。7.2.2 變量7.2 常量和變量2局部變量(1)局部變量定義Transact-SQL 語言中的變量在定義和引用時要在其名稱前加上標(biāo)志“”,而且必須先用DECLARE 命令定義后才可以使用。其定義的一般格式如下:D
6、ECLARE 變量名 數(shù)據(jù)類型 ,n 變量名:變量名必須以符號 開頭,并且變量名必須符合SQL Server 的命名規(guī)則。數(shù)據(jù)類型:用于設(shè)置變量的數(shù)據(jù)類型及其大小。數(shù)據(jù)類型可以是任何由系統(tǒng)提供的或用戶定義的數(shù)據(jù)類型。7.2.2 變量7.2 常量和變量(2)局部變量的賦值方法使用DECLARE 命令聲明并創(chuàng)建變量之后,系統(tǒng)會將其初始值設(shè)為NULL,如果想要設(shè)定變量的值,必須使用SET 命令或者SELECT 命令。SET 局部變量名 = 表達(dá)式 或者SELECT 局部變量名 = 表達(dá)式 ,.n 一個SET 語句只能給一個變量賦值。SELECT 語句可以同時給幾個變量賦值,省略FROM 等同于SET
7、。若不省略,則將查詢到的記錄數(shù)據(jù)賦給局部變量,若返回多行記錄,則最后一行記錄數(shù)據(jù)賦給局部變量。局部變量的名稱不能與全局變量的名稱相同,否則會在使用中出錯。7.2.2 變量7.3 運算符和表達(dá)式1運算符運算符是一種符號,用來指定要在一個或多個表達(dá)式中執(zhí)行的操作。在SQL Server 系統(tǒng)中,可以使用的運算符分為算術(shù)運算符、邏輯運算符、賦值運算符、比較運算符、字符串連接運算符、位運算符、一元運算符等。(1)算術(shù)運算符 算術(shù)運算符包括加(+)、減()、乘(*)、除(/)和取模(%)。 對于加、減、乘、除這四種算術(shù)運算符,計算的兩個表達(dá)式可以是數(shù)字?jǐn)?shù)據(jù)類型分類的任何數(shù)據(jù)類型。 對于取模運算符,要求進(jìn)
8、行計算的數(shù)據(jù)的數(shù)據(jù)類型為bigint、int、smallint 和tinyint,功能是返回一個除法運算的整數(shù)余數(shù)。7.3 運算符和表達(dá)式(2)邏輯運算符邏輯運算符對某些條件進(jìn)行測試,以獲得其真實情況。邏輯運算符返回帶有TRUE 或FALSE 值的布爾數(shù)據(jù)類型。邏輯表達(dá)式常用于IF 語句和WHILE 語句的條件、WHERE 子句以及HAVING 子句的條件,邏輯運算符見表7-3。7.3 運算符和表達(dá)式(3)賦值運算符Transact-SQL 中只有一個賦值運算符,即等號(=)。賦值運算符能夠?qū)?shù)據(jù)值指派給特定的對象。另外,還可以使用賦值運算符在列標(biāo)題和為列定義值的表達(dá)式之間建立關(guān)系。(4)比較
9、運算符比較運算符(又稱關(guān)系運算符)用于測試兩個相同類型表達(dá)式的順序、大小相同與否,其運算結(jié)果為邏輯值TRUE 或FALSE。(5)字符串連接運算符字符串連接運算符即加號(+),用于兩個字符串?dāng)?shù)據(jù)的連接。在SQL Server 中,對字符串的其他操作通過字符串函數(shù)進(jìn)行。字符串連接運算符的操作數(shù)類型有char、varchar和text 等。7.3 運算符和表達(dá)式(6)位運算符位運算符包括按位與(&)、按位或(|)、按位異或()。位運算符用來在整型數(shù)據(jù)或者二進(jìn)制數(shù)據(jù)(image 數(shù)據(jù)類型除外)之間執(zhí)行位操作。(7)一元運算符一元運算符只對一個表達(dá)式執(zhí)行操作,該表達(dá)式可以是數(shù)據(jù)類型類別中的任何一種數(shù)據(jù)
10、類型。具體為:+(正):數(shù)值為正;-(負(fù)):數(shù)值為負(fù);(位非):返回數(shù)字的非。其中:+(正)和 -(負(fù))運算符可以用數(shù)值數(shù)據(jù)類型類別中任一數(shù)據(jù)類型的任意表達(dá)式。(位非)運算符只能用于整型數(shù)據(jù)類型類別中任一數(shù)據(jù)類型的表達(dá)式。(8)運算符優(yōu)先級和結(jié)合性當(dāng)一個復(fù)雜的表達(dá)式有多個運算符時,運算符優(yōu)先級決定執(zhí)行運算的先后次序。具有高優(yōu)先級的運算符先于低優(yōu)先級的運算符進(jìn)行計算。如果復(fù)雜的表達(dá)式有多個運算符,則運算符優(yōu)先級將確定執(zhí)行操作的順序,執(zhí)行順序可能對結(jié)果數(shù)值有明顯的影響。7.3 運算符和表達(dá)式運算符的運算優(yōu)先級見表7-4。7.3 運算符和表達(dá)式2表達(dá)式表達(dá)式是標(biāo)識符、值和運算符的組合,SQL Ser
11、ver 可以對其求值以獲取結(jié)果。訪問或更改數(shù)據(jù)時,可在多個不同的位置使用數(shù)據(jù)。例如,可以將表達(dá)式用作要在查詢中檢索數(shù)據(jù)的一部分,也可以作為查找滿足一組條件的數(shù)據(jù)時的搜索條件。表達(dá)式可以通過運算符將常量、函數(shù)、列名、變量、子查詢等組合起來。3批處理批處理是包含一個或多個Transact-SQL 語句的集合。SQL Server 將批處理的語句編譯為一個可執(zhí)行單元,稱為執(zhí)行計劃,批處理的結(jié)束符為“GO”。語法:GO COUNT7.4 流程控制語句BEGINEND 語句能夠?qū)⒍鄠€Transact-SQL 語句組合成一個語句塊,并將它們視為一個單元處理。語法格式為:7.4.1 BEGINEND 語句B
12、EGIN 語句塊 END7.4 流程控制語句IFELSE 語句是條件判斷語句,用來判斷當(dāng)某一條件成立時執(zhí)行某段程序,條件不成立時執(zhí)行另一段程序。語法格式如下:7.4.2 IFELSE 語句IF 條件表達(dá)式 語句塊1 ELSE 語句塊2 7.4 流程控制語句使用CASE 語句可以進(jìn)行多個分支的選擇。CASE 具有以下兩種格式。簡單CASE 格式:將某個表達(dá)式與一組簡單表達(dá)式進(jìn)行比較,以確定結(jié)果。搜索CASE 格式:計算一組布爾表達(dá)式,以確定結(jié)果。1簡單CASE 的語法格式7.4.3 CASE 語句CASE 輸入表達(dá)式WHEN 比較值 THEN 返回值 n ELSE 其他默認(rèn)值END7.4 流程控
13、制語句2搜索CASE 的語法格式7.4.3 CASE 語句CASEWHEN 條件表達(dá)式 THEN 結(jié)果表達(dá)式 n ELSE 其他結(jié)果表達(dá)式END7.4 流程控制語句如果需要重復(fù)執(zhí)行程序中的一部分語句,可使用WHILE 循環(huán)語句實現(xiàn)。WHILE 語句通過布爾表達(dá)式來設(shè)置條件,當(dāng)條件成立時,重復(fù)執(zhí)行一個語句或語句塊,重復(fù)執(zhí)行的部分稱為循環(huán)體??梢允褂肂REAK 和CONTINUE 關(guān)鍵字在循環(huán)內(nèi)部控制WHILE 循環(huán)語句的執(zhí)行。語法格式為:7.4.4 WHILE 語句WHILE 布爾表達(dá)式 語句塊1BREAK 語句塊2CONTINUE 語句塊37.4 流程控制語句GOTO 語句可以實現(xiàn)無條件的跳轉(zhuǎn)
14、,改變程序執(zhí)行的流程。GOTO 語句可以使程序直接跳到指定的標(biāo)有標(biāo)號的位置上繼續(xù)執(zhí)行,而位于GOTO 語句和標(biāo)號之間的程序?qū)⒉粫?zhí)行。GOTO 語句和標(biāo)號可以用在語句塊、批處理和存儲過程中,標(biāo)號必須符合標(biāo)識符命名規(guī)則,且必須以冒號(:)結(jié)尾。語法格式為:GOTO Lable7.4.5 GOTO 語句7.4 流程控制語句使用RETURN 語句,可以從查詢或過程中無條件退出??稍谌魏螘r候用于從過程、批處理或語句塊中退出,而不執(zhí)行位于RETURN 之后的語句。語法格式為:RETURN 整型表達(dá)式 說明:整型表達(dá)式為一個整數(shù)值,是RETURN 語句要返回的值。7.4.6 RETURN 語句7.4 流程
15、控制語句WAITFOR 語句用于在達(dá)到指定時間或時間間隔之前,或者指定語句至少修改或返回一行之前,暫時阻止執(zhí)行批處理、存儲過程或事務(wù)。語法格式為:WAITFOR DELAY 等待時段 |TIME 完成時間 7.4.7 WAITFOR 語句7.4 流程控制語句注釋,也稱為注解,是寫在程序代碼中的說明性文字,它們對程序的結(jié)構(gòu)及功能進(jìn)行文字說明。注釋內(nèi)容不被系統(tǒng)編譯,也不被程序執(zhí)行。在Transact-SQL 中可使用兩類注釋字符:1-(雙連字符)這些注釋字符可與要執(zhí)行的代碼處在同一行,也可另起一行。從雙連字符開始到行尾的內(nèi)容均為注釋。對于多行注釋,必須在每個注釋行的前面使用雙連字符。2/* */這
16、些注釋字符可與要執(zhí)行的代碼處在同一行,也可另起一行,甚至可以在可執(zhí)行代碼內(nèi)部。開始注釋字符對(/*) 與結(jié)束注釋字符對(*/) 之間的所有內(nèi)容均視為注釋。對于多行注釋,必須使用開始注釋字符對(/*) 來開始注釋,并使用結(jié)束注釋字符對(*/) 來結(jié)束注釋。7.4.8 注釋語句7.5 常用函數(shù)Transact-SQL 提供的內(nèi)置函數(shù)按其值是否具有確定性可分為確定性的和非確定性的兩大類。(1)確定性函數(shù):每次使用特定的輸入值集調(diào)用該函數(shù)時,總是返回相同的結(jié)果。(2)非確定性函數(shù):每次使用特定的輸入值集調(diào)用該函數(shù)時,可能返回不同的結(jié)果。例如,DATEADD 內(nèi)置函數(shù)是確定性函數(shù),因為對于其任何給定參數(shù)
17、總是返回相同的結(jié)果。GETDATE 是非確定性函數(shù),每次執(zhí)行后,返回結(jié)果都不同。Transact-SQL 系統(tǒng)內(nèi)置函數(shù)按函數(shù)的功能可分為聚合函數(shù)、數(shù)學(xué)函數(shù)、字符串函數(shù)、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)、日期和時間函數(shù)等類型。7.5 常用函數(shù)1聚合函數(shù)特性聚合函數(shù)都具有確定性,即任何時候用一組給定的輸入值調(diào)用聚合函數(shù)時,都返回相同的值。僅在下列項中聚合函數(shù)允許作為表達(dá)式使用:(1)SELECT 語句的選擇列表(子查詢或外部查詢)。(2)COMPUTE 或 COMPUTE BY 子句。(3)HAVING 子句。7.5.1 聚合函數(shù)7.5 常用函數(shù)2常用聚合函數(shù)(1)AVG():返回數(shù)值列中所有非空數(shù)值的平均值。(
18、2)COUNT():返回一組數(shù)值的個數(shù),是一個整型值。其中:COUNT(column_name) 函數(shù)返回指定列值的數(shù)目(NULL 不計入);COUNT(*) 函數(shù)返回表中的記錄數(shù);COUNT(DISTINCT column_name) 函數(shù)返回指定列的不同值的數(shù)目。(3)MAX():返回一列中所有非空數(shù)值的最大值。(4)MIN():返回一列中所有非空數(shù)值的最小值。MAX() 和MIN() 函數(shù)可以用于大多數(shù)的數(shù)據(jù)類型,返回值根據(jù)對不同數(shù)據(jù)類型的排序規(guī)則而定。(5)SUM():返回數(shù)值列中所有非空數(shù)值的總和。7.5.1 聚合函數(shù)7.5 常用函數(shù)7.5.2 數(shù)學(xué)函數(shù)7.5 常用函數(shù)1ASCII(
19、) 函數(shù)ASCII(s) 函數(shù)返回字符表達(dá)式s 最左端字符的ASCII 碼值。在ASCII() 函數(shù)中,純數(shù)字的字符串可不用單引號() 括起來,但含其他字符的字符串必須用單引號() 括起來使用,否則會出錯。2CHAR() 函數(shù)CHAR(n) 函數(shù)將ASCII 碼n 轉(zhuǎn)換為字符。如果沒有輸入0255 的ASCII 碼值,CHAR(n) 返回NULL 。3LOWER() 和UPPER() 大小寫轉(zhuǎn)換函數(shù)LOWER(s):將字符串s 全部轉(zhuǎn)為小寫。UPPER(s):將字符串s 全部轉(zhuǎn)為大寫。4STR() 函數(shù)STR() 函數(shù)把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù),語法格式為:STR(,length,)7.5.
20、3 字符串函數(shù)7.5 常用函數(shù)5LEN() 函數(shù)LEN(s) 函數(shù)返回一個代表字符串長度的整型值。6去空格字符串函數(shù)(1)LTRIM(s):把字符串頭部的空格去掉。(2)RTRIM(s):把字符串尾部的空格去掉。7取子串函數(shù)(1)LEFT(s,n):返回字符串s 左起n 個字符的字符串。(2)RIGHT(s,n):返回字符串s 右起n 個字符的字符串。(3)SUBSTRING(s,n,length):返回從字符串s 左邊第n 個字符起length 個字符的部分字符串。7.5.3 字符串函數(shù)7.5 常用函數(shù)8字符串比較函數(shù)語法格式:CHARINDEX(s1,s2,n)返回字符串s1 在字符串s2
21、 中出現(xiàn)的開始位置。 如果沒有發(fā)現(xiàn)字符串s1,則返回0 值,此函數(shù)不能用于TEXT 和IMAGE 數(shù)據(jù)類型。9字符串操作函數(shù)(1)REPLACE(s1,s2,s3):返回在字符串s1 中用字符串s3 替換字符串s2 之后的字符串。(2)SPACE(n):返回一個有n 個長度的空白字符串。如果n 值為負(fù)值,則返回NULL。7.5.3 字符串函數(shù)7.5 常用函數(shù)1CAST() 函數(shù)CAST() 函數(shù)用于將某種數(shù)據(jù)類型的表達(dá)式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CAST() 函數(shù)的參數(shù)是一個表達(dá)式,它包括用AS 關(guān)鍵字分隔的源值和目標(biāo)數(shù)據(jù)類型。語法格式為:CAST( AS length )參數(shù)說明:(1)expr
22、ession:任何有效的SQL Server 表達(dá)式。(2)AS:用于分隔兩個參數(shù),在AS 之前是要處理的數(shù)據(jù),在AS 之后是要轉(zhuǎn)換的數(shù)據(jù)類型。(3)data_type:系統(tǒng)所提供的數(shù)據(jù)類型,不能使用用戶定義的數(shù)據(jù)類型。(4)length:nchar、nvarchar、char、varchar、binary 或 varbinary 數(shù)據(jù)類型的可選參數(shù)。7.5.4 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)7.5 常用函數(shù)2CONVERT() 函數(shù)對于簡單類型轉(zhuǎn)換,CONVERT() 函數(shù)和CAST() 函數(shù)的功能相同,只是語法不同。CAST() 函數(shù)一般更容易使用,其功能也更簡單。CONVERT() 函數(shù)的優(yōu)點是可以格
23、式化日期和數(shù)值,它需要兩個參數(shù):第1 個是目標(biāo)數(shù)據(jù)類型,第2 個是源數(shù)據(jù)。語法格式為:CONVERT(,)參數(shù)說明:(1)data_type:系統(tǒng)所提供的數(shù)據(jù)類型,不能使用用戶定義的數(shù)據(jù)類型。(2)expression:任何有效的SQL Server 表達(dá)式。7.5.4 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)7.5 常用函數(shù)日期和時間函數(shù)對日期和時間輸入值執(zhí)行操作,并返回一個字符串、數(shù)字值或日期和時間值。1DAY() 函數(shù)DAY(date) 函數(shù)返回日期中的“日”值。2MONTH() 函數(shù)MONTH(date) 函數(shù)返回日期中的“月”值。3YEAR() 函數(shù)YEAR(date) 函數(shù)返回日期中的“年”值。4DATE
24、ADD() 函數(shù)語法格式:DATEADD( 時間間隔類型,number,date)7.5.5 日期和時間函數(shù)7.5 常用函數(shù)DATEADD() 返回指定日期date 加上指定的額外日期間隔number 產(chǎn)生的新日期,時間間隔類型見表7-6。7.5.5 日期和時間函數(shù)7.5 常用函數(shù)5DATEDIFF() 函數(shù)語法格式:DATEDIFF( 時間間隔類型,日期1,日期2)DATEDIFF() 函數(shù)返回兩個指定日期的差距值,其結(jié)果值是一個帶有正負(fù)號的整數(shù)值(日期1- 日期2)。6DATENAME() 函數(shù)語法格式:DATENAME( 時間間隔類型,日期)DATENAME() 函數(shù)以字符串的形式返回日
25、期的指定部分,此部分由時間間隔類型來指定。7.5.5 日期和時間函數(shù)7.5 常用函數(shù)7DATEPART() 函數(shù)語法格式:DATEPART( 時間間隔類型,日期)DATEPART() 函數(shù)以整數(shù)值的形式返回日期的指定部分。此部分由時間間隔類型來指定。其中:(1)DATEPART(dd,date) 等同于DAY(date)。(2)DATEPART(mm,date) 等同于MONTH(date)。(3)DATEPART(yy,date) 等同于YEAR(date)。8GETDATE()以DATETIME 的缺省格式返回系統(tǒng)當(dāng)前的日期和時間。7.5.5 日期和時間函數(shù)7.5 常用函數(shù)1標(biāo)量函數(shù)的創(chuàng)建
26、與調(diào)用(1)標(biāo)量函數(shù)的創(chuàng)建標(biāo)量函數(shù)用于對傳遞給它的一個或者多個參數(shù)值進(jìn)行處理和計算,并返回一個確定類型的單一值。其返回值類型為除TEXT、NTEXT、IMAGE、CURSOR、TIMESTAMP 和TABLE 類型外的其他數(shù)據(jù)類型。創(chuàng)建標(biāo)量函數(shù)的語法格式為:7.5.6 用戶自定義函數(shù)CREATE FUNCTION function_name( parameter_name AS parameter_data_type = DEFAULT ,.n )RETURNS return_data_type AS BEGINfunction_bodyRETURN expressionEND7.5 常用函數(shù)
27、(2)標(biāo)量函數(shù)的調(diào)用當(dāng)調(diào)用用戶定義的標(biāo)量函數(shù)時,可以在SELECT 語句中調(diào)用,實參可為已賦值的局部變量或表達(dá)式。調(diào)用標(biāo)量函數(shù)的語法格式為:所有者. 函數(shù)名( 實參1, 實參n)。7.5.6 用戶自定義函數(shù)7.5 常用函數(shù)2內(nèi)嵌表值函數(shù)的創(chuàng)建與調(diào)用(1)內(nèi)嵌表值函數(shù)的創(chuàng)建內(nèi)嵌表值函數(shù)的返回值是一個表,內(nèi)嵌表值函數(shù)功能相當(dāng)于一個參數(shù)化的視圖。創(chuàng)建內(nèi)嵌表值函數(shù)的語法格式為:7.5.6 用戶自定義函數(shù)CREATE FUNCTION function_name( parameter_name AS parameter_data_type = DEFAULT ,.n )RETURNS table AS
28、RETURN (SELECT statement )7.5 常用函數(shù)3多語句表值函數(shù)的創(chuàng)建與調(diào)用(1)多語句表值函數(shù)的創(chuàng)建多語句表值函數(shù)可以看作標(biāo)量函數(shù)和內(nèi)嵌表值函數(shù)的結(jié)合體。它的返回值是一個表,但它和標(biāo)量函數(shù)一樣有一個用BEGINEND 語句括起來的函數(shù)體,返回值表中的數(shù)據(jù)是由函數(shù)體中的語句插入的。由此可見,它可以進(jìn)行多次查詢,對數(shù)據(jù)進(jìn)行多次篩選與合并,彌補了內(nèi)嵌表值函數(shù)的不足。創(chuàng)建多語句表值函數(shù)的語法格式為:7.5.6 用戶自定義函數(shù)CREATE FUNCTION function_name( parameter_name AS parameter_data_type = DEFAULT
29、,.n )RETURNS return_variable table /* 定義作為返回值的表*/ AS BEGINfunction_bodyRETURNEND7.5 常用函數(shù)(2)多語句表值函數(shù)的調(diào)用多語句表值函數(shù)的調(diào)用與內(nèi)嵌表值函數(shù)的調(diào)用方法相同,只能通過SELECT 語句調(diào)用。內(nèi)嵌表值函數(shù)和多語句表值函數(shù)都返回表,二者不同之處在于:內(nèi)嵌表值函數(shù)沒有函數(shù)主體,返回的表是單個SELECT 語句的結(jié)果集;而多語句表值函數(shù)在BEGINEND 塊中定義的函數(shù)主體包含Transact-SQL 語句,這些語句可生成行,并將行插入表中,最后返回表。7.5.6 用戶自定義函數(shù)7.6 游標(biāo)的操作1游標(biāo)的概念
30、關(guān)系數(shù)據(jù)庫管理系統(tǒng)實質(zhì)是面向集合的,關(guān)系數(shù)據(jù)庫中的操作會對整個行集產(chǎn)生影響,由語句所返回的這一完整的行集被稱為結(jié)果集。在SQL Server 中并沒有一種描述表中單一一行的表達(dá)形式,除非使用WHERE 子句來限制只有一行記錄被選中。而應(yīng)用程序,特別是交互式聯(lián)機應(yīng)用程序,并不總能將整個結(jié)果集作為一個單元來有效地處理,這些應(yīng)用程序需要一種機制以便每次處理一行或一部分行。因此可借助游標(biāo)來進(jìn)行面向單行記錄的數(shù)據(jù)處理。7.6.1 游標(biāo)的概述7.6 游標(biāo)的操作游標(biāo)通過以下方式擴展結(jié)果處理:(1)允許定位在結(jié)果集的特定行。(2)從結(jié)果集的當(dāng)前位置檢索一行或多行。(3)支持對結(jié)果集中當(dāng)前位置的行進(jìn)行數(shù)據(jù)修改。
31、(4)為由其他用戶對顯示在結(jié)果集中的數(shù)據(jù)庫數(shù)據(jù)所做的更改提供不同級別的可見性支持。(5)提供腳本、存儲過程和觸發(fā)器中使用的訪問結(jié)果集中的數(shù)據(jù)的Transact-SQL 語句。7.6.1 游標(biāo)的概述7.6 游標(biāo)的操作2游標(biāo)的類型7.6.1 游標(biāo)的概述SQL Server 支持三種類型的游標(biāo):Transact-SQL 游標(biāo)API 服務(wù)器游標(biāo)客戶游標(biāo)7.6 游標(biāo)的操作服務(wù)器游標(biāo)包含以下四種:7.6.1 游標(biāo)的概述靜態(tài)游標(biāo)動態(tài)游標(biāo)只進(jìn)游標(biāo)鍵集驅(qū)動游標(biāo)7.6 游標(biāo)的操作操作游標(biāo)分為五個基本步驟:7.6.2 游標(biāo)的基本操作聲明游標(biāo)打開游標(biāo)讀取數(shù)據(jù)關(guān)閉游標(biāo)釋放游標(biāo)7.6 游標(biāo)的操作1聲明游標(biāo)和使用其他類型的變量一樣,使用一個游標(biāo)之前,必須先聲
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)人才培養(yǎng)方案集
- 2025年安陽學(xué)院單招職業(yè)傾向性考試題庫標(biāo)準(zhǔn)卷
- 哈密文旅集團實習(xí)的內(nèi)容
- 農(nóng)業(yè)科技技術(shù)應(yīng)用與推廣手冊
- 洋酒名酒知識培訓(xùn)課件
- 康美OTC終端藥店手繪POP培訓(xùn)教程
- 辦公場所租賃協(xié)議書
- 2025年安徽揚子職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫1套
- 酒店管理與接待作業(yè)指導(dǎo)書
- 2025年白城職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫a4版
- 2025年鄂東高三語文2月調(diào)研聯(lián)考試卷附答案解析
- 滬教版數(shù)學(xué)四年級下冊全冊教案
- 數(shù)字孿生技術(shù) 課件 第1、2章 概述;數(shù)字孿生中的物聯(lián)網(wǎng)和人工智能
- 2025年廣東省廣晟控股集團有限公司招聘筆試參考題庫含答案解析
- 2024年山東外貿(mào)職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 數(shù)字經(jīng)濟學(xué)導(dǎo)論-全套課件
- NB/T 10742-2021智能化綜采工作面設(shè)計規(guī)范
- 屋面網(wǎng)架結(jié)構(gòu)液壓提升施工方案(50頁)
- 第6章向量空間ppt課件
- 醫(yī)療機構(gòu)聘用(返聘)證明
- 碘-淀粉比色法測定淀粉酶活力
評論
0/150
提交評論