sql用戶定義函數(shù)_第1頁
sql用戶定義函數(shù)_第2頁
sql用戶定義函數(shù)_第3頁
sql用戶定義函數(shù)_第4頁
sql用戶定義函數(shù)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

用戶定義函數(shù)標(biāo)量函數(shù)往往根據(jù)輸入?yún)?shù)值的不同來獲得不同的函數(shù)值,在標(biāo)量函數(shù)中可以使用多個(gè)輸入?yún)?shù),而函數(shù)的返回值卻只能有一個(gè)。當(dāng)需要在代碼中的多個(gè)位置進(jìn)行相同的數(shù)學(xué)計(jì)算時(shí),標(biāo)量函數(shù)十分有用。標(biāo)量函數(shù)的函數(shù)體可包括一條或多條T-SQL語句。這些T-SQL語句以BEGIN開始,以EDN結(jié)束;用RETURNS子句定義該函數(shù)返回值的數(shù)據(jù)類型,用RETURN語句返回該函數(shù)的值。

1.創(chuàng)建標(biāo)量函數(shù)的基本語法

CREATEFUNCRIONfunction_name ([{@parameter_namescalar_parameter_type[=dafault]}[,...n]]) RETURNSscalar_return_data_type [WITHENCRYPTION] [AS] BEGIN Function_body RETURNscalar_expression END

其中:

function_name為函數(shù)的名稱。

@parameter_name為輸入?yún)?shù)名。輸入?yún)?shù)的名必須以@作為開頭。

scalar_parameter_type為輸入?yún)?shù)的類型。

dafault為所對(duì)應(yīng)的輸入?yún)?shù)的默認(rèn)值。

RETURNSscalar_return_data_type子句定義了函數(shù)返回值的類型,該類型不能是text、ntext等類型。

WITH子句指出了創(chuàng)建函數(shù)的選項(xiàng)。如果指定了ENCRYPTION參數(shù),則創(chuàng)建的函數(shù)是被加密的,函數(shù)定義的文本將以加密的形式存儲(chǔ)在syscomments表中,任何人都不能查看到該函數(shù)的定義,包括函數(shù)的創(chuàng)建者和系統(tǒng)管理員。

BEGIN與END之間定義了函數(shù)體,該函數(shù)體中必須包括一條RETURN語句,用于返回一個(gè)值。

2.標(biāo)量函數(shù)的創(chuàng)建及應(yīng)用 在程序中應(yīng)用標(biāo)量函數(shù)時(shí),通過輸入?yún)?shù)將數(shù)據(jù)傳遞給函數(shù)體。在創(chuàng)建標(biāo)量函數(shù)時(shí),輸入?yún)?shù)必須位于CREATEFUNCTION與RETURNS子句之間定義,并且要用括號(hào)括起來。每個(gè)輸入?yún)?shù)都要指定參數(shù)名和數(shù)據(jù)類型,參數(shù)名必須以@符號(hào)為前綴,可以為參數(shù)指定默認(rèn)值。各個(gè)參數(shù)定義之間應(yīng)用逗號(hào)隔開。

【例1】創(chuàng)建一個(gè)統(tǒng)計(jì)某本書的被借次數(shù)函數(shù),并在創(chuàng)建成功后查看“王漢生”編寫的“大學(xué)物理”的被借次數(shù)。

(1)創(chuàng)建“被借次數(shù)”函數(shù)。在該函數(shù)中創(chuàng)建輸入?yún)?shù)@圖書名稱,@作者,以便查詢不同圖書的被借次數(shù)。

CREATEFUNCTION被借次數(shù)

(@圖書名稱varchar(40)=‘?dāng)?shù)字電路’,@作者varchar(10)=‘李大友’) RETURNSint BEGIN DECLARE@借書次數(shù)int SELECT@借書次數(shù)=count(*)

FROM租借信息JOIN圖書信息ON租借信息.圖書編號(hào)=圖書信息.圖書編號(hào)

WHERE圖書名稱=@圖書名稱and作者like'%'+@作者+'%' RETURN@借書次數(shù)

END (2)應(yīng)用標(biāo)量函數(shù)。當(dāng)調(diào)用標(biāo)量值函數(shù)時(shí),至少應(yīng)使用函數(shù)的兩部分名稱,即使是所有者本人也必須如此。 語法形式為

[database_name.]owner_name.function_name([argument_expr][,...n])

其中:

database_name為函數(shù)所在數(shù)據(jù)庫的名稱。

owner_name為函數(shù)所有者的名稱。

argument_expr為參數(shù)傳值的變量表達(dá)式。如果函數(shù)的參數(shù)有默認(rèn)值,則在調(diào)用該函數(shù)時(shí)必須指定"default"關(guān)鍵字才能獲得默認(rèn)值。 使用“被借次數(shù)”函數(shù),查詢“王漢生”所編的“大學(xué)物理”的被借次數(shù)時(shí)應(yīng)寫成:

SELECTdbo.被借次數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論