sql server 自定義函式初探

2021-09-22 06:58:26 字數 1248 閱讀 2416

函式是由乙個或多個transact-sql 語句組成的子程式,可用於封裝**以便重新使用。使用者自定義函式(user defined functions)是sql server 的資料庫物件,它不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存過程等的程式段中使用,也可以像儲存過程一樣通過execute 命令來執行。使用者自定義函式中儲存了乙個transact-sql 例程,可以返回一定的值。

在sql server中根據函式返回值形式的不同將使用者自定義函式分為三種型別:

1.標量型函式(scalar functions)

標量型函式返回乙個確定型別的標量值其返回值型別為除text、 ntext、 image、cursor、 timestamp 和table 型別外的其它資料型別。函式體語句定義在begin-end語句內,其中包含了可以返回值的transact-sql 命令。code is cheap.舉個例子來說,我們平時在設計資料庫的時候,設計主鍵的方法通常有三種,自增字段,guid和由年月日時分秒微秒加上幾位(3到5)位內的隨機數組成的長整數,比如20092699035787這種形式,下面就通過網上的和自己的總結來實現第三種主鍵的生成函式:

上面函式已經注釋的很明白,函式需要輔助檢視來實現rand()函式的功能,下面是檢視的建立方法:

呼叫函式的方式: select dbo.createtid(getdate()) as tid改進的方法。

2.內聯錶值型函式(inline table-valued functions)

內聯錶值型函式以表的形式返回乙個返回值,即它返回的是乙個表內聯錶值型函式沒有由begin-end 語句括起來的函式體。其返回的表由乙個位於return 子句中的select命令段從資料庫中篩選出來。內聯錶值型函式功能相當於乙個引數化的檢視。好了,看例子吧:

呼叫的方式:select value from dbo.f_split('a,b,c,d,e,f,123',',') as tmp 

試試看吧,很簡單的。

3.多宣告錶值型函式(multi-statement table-valued functions)

多宣告錶值型函式可以看作標量型和內聯錶值型函式的結合體。它的返回值是乙個表,但它和標量型函式一樣有乙個用begin-end 語句括起來的函式體,返回值的表中的資料是由函式體中的語句插入的。由此可見,它可以進行多次查詢,對資料進行多次篩選與合併,彌補了內聯錶值型函式的不足。

這種函式型別的例項可以參考

不在贅述了。

期待留心的你和熱心的你和我多多交流和總結。 

SQL SERVER 自定義函式

元宵節快樂 自定義函式分為兩類 一類為 標量函式,一類為表值函式。create funetion 函式名 引數 return 返回值資料型別 with as begin sql語句 必須有return 變數或值 end 一 內聯 值函式 create function 函式名 引數 returns ...

sqlserver自定義函式

returns 子句指定一種標量資料型別,則函式為標量值函式。語法create function 函式名 引數 returns 返回值資料型別 with as begin sql語句 必須有return 變數或值 end 釋義 列子 create function funcgetresult ret...

SQL SERVER 自定義函式

sql server自定義函式分三種 注意returns,需要加 s 標量值函式,內聯式錶值函式,多語句錶值函式。標量值函式 create function funcname a int returns intas begin sql語句 return intend 內聯式錶值函式 沒有begin....