sql server用戶自定義函數(shù)詳細(xì)介紹

sql server用戶自定義函數(shù)詳細(xì)介紹

ID:1495874

大?。?7.50 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2017-11-12

sql server用戶自定義函數(shù)詳細(xì)介紹_第1頁(yè)
sql server用戶自定義函數(shù)詳細(xì)介紹_第2頁(yè)
sql server用戶自定義函數(shù)詳細(xì)介紹_第3頁(yè)
sql server用戶自定義函數(shù)詳細(xì)介紹_第4頁(yè)
資源描述:

《sql server用戶自定義函數(shù)詳細(xì)介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、SQLServer用戶自定義函數(shù)用戶自定義函數(shù)不能用于執(zhí)行一系列改變數(shù)據(jù)庫(kù)狀態(tài)的操作,但它可以像系統(tǒng)函數(shù)一樣在查詢或存儲(chǔ)過(guò)程等的程序段中使用,也可以像存儲(chǔ)過(guò)程一樣通過(guò)EXECUTE命令來(lái)執(zhí)行。在SQLServer中根據(jù)函數(shù)返回值形式的不同將用戶自定義函數(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)。在RETURNS子句中定義返回值的數(shù)據(jù)類型,并且函數(shù)的最后一條語(yǔ)句必須為Re

2、turn語(yǔ)句。創(chuàng)建標(biāo)量函數(shù)的格式:CreateFunction函數(shù)名(參數(shù))Returns返回值數(shù)據(jù)類型[With{Encryption

3、Schemabinding}][AS]BEGINSQL語(yǔ)句(必須有Return子句)END舉例:*******************************************************************CREATEFUNCTIONdbo.Max(@aint,@bint)RETURNSintASBEGINDECLARE@maxintIF@a>@bSET@max=@aELSESET@m

4、ax=@bReturn@maxEND*******************************************************************調(diào)用標(biāo)量函數(shù)可以在T-SQL語(yǔ)句中允許使用標(biāo)量表達(dá)式的任何位置調(diào)用返回標(biāo)量值(與標(biāo)量表達(dá)式的數(shù)據(jù)類型相同)的任何函數(shù)。必須使用至少由兩部分組成名稱的函數(shù)來(lái)調(diào)用標(biāo)量值函數(shù),即架構(gòu)名.對(duì)象名,如dbo.Max(12,34)。(2)內(nèi)聯(lián)表值函數(shù)內(nèi)聯(lián)表值型函數(shù)以表的形式返回一個(gè)返回值,即它返回的是一個(gè)表。內(nèi)聯(lián)表值型函數(shù)沒(méi)有由BEGIN-END語(yǔ)句括起來(lái)的函數(shù)體。其返回的表是由一個(gè)位于R

5、ETURN子句中的SELECT命令從數(shù)據(jù)庫(kù)中篩選出來(lái)。內(nèi)聯(lián)表值型函數(shù)功能相當(dāng)于一個(gè)參數(shù)化的視圖。*******************************************************************CreateFunction函數(shù)名(參數(shù))RETURNStable[with{Encryption

6、Schemabinding}]ASReturn(一條SQL語(yǔ)句)舉例:CREATEFUNCTIONfunc(@idchar(8))RETURNSTABLEASRETURN(SELECT*FROMstudentWHERES

7、ID=@id)*********************************************************************調(diào)用內(nèi)聯(lián)表值函數(shù):調(diào)用時(shí)不需指定架構(gòu)名,如select*fromfunc('51300521')(3)多語(yǔ)句表值函數(shù)多語(yǔ)句表值函數(shù)可以看作標(biāo)量函數(shù)和內(nèi)聯(lián)表值函數(shù)的結(jié)合體。它的返回值是一個(gè)表,但它和標(biāo)量型函數(shù)一樣有一個(gè)用BEGIN-END語(yǔ)句括起來(lái)的函數(shù)體,返回值的表中的數(shù)據(jù)是由函數(shù)體中的語(yǔ)句插入的。由此可見(jiàn),它可以進(jìn)行多次查詢,對(duì)數(shù)據(jù)進(jìn)行多次篩選與合并,彌補(bǔ)了內(nèi)聯(lián)表值函數(shù)的不足。CreateFu

8、nction函數(shù)名(參數(shù))RETURNS表變量名(表變量字段定義)[with{Encryption

9、Schemabinding}]ASBEGINSQL語(yǔ)句ReturnEND舉例:*******************************************************************CREATEFUNCTIONfunc(@selectionint)RETURNS@tableTABLE(SIDchar(4)primarykeynotnull,SNamenvarchar(4)null)ASBEGINIF@selectio

10、n=0INSERTINTO@table(SELECTSID,SNameFROMstudent0)ELSEINSERTINTO@table(SELECTSID,SNameFROMstudent1)ReturnEND*******************************************************************調(diào)用多語(yǔ)句表值函數(shù):和調(diào)用內(nèi)聯(lián)表值函數(shù)一樣,調(diào)用時(shí)不需制定架構(gòu)名。注意:與編程語(yǔ)言中的函數(shù)不同的是,SQLServer自定義函數(shù)必須具有返回值。注意:Schemabinding用于將函數(shù)綁定到它引用的對(duì)象

11、上。函數(shù)一旦綁定,則不能刪除、修改,除非刪除綁定。一個(gè)完整的簡(jiǎn)單例子:--創(chuàng)建函數(shù)ifexists(select1fromsysobjectswher

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。