返回標量CLR自定義函式

2021-09-08 22:14:28 字數 1936 閱讀 6720

昨天有學習了返回表自定義函式《clr table-valued函式》今天學習另乙個,實現返回標量(scalar-valued) function。

這個標量函式獲取分類全名。

select

[categoryname]+

'--'+

[kindname]+

'--'+

[fruitname

]from

[dbo

].tvf_fruit() where

[fruit_nbr]=

@fruit_nbr

view code

可複製**:

[sqlfunction(dataaccess =dataaccesskind.read)]

public

static

sqlstring tvf_getfullname(sqlbyte fruit_nbr)

view code

編譯為dll。然後部署至sql,可執行下面**,也可以參考前幾篇的手動在microsoft sql server management stuido下進行。更詳細《簡單建立與佈署clr儲存過程》

可複製**:

if

exists (select

*from sys.objects where name =

'tvf_getfullname')

drop

function

tvf_getfullname;

goif

exists (select

*from sys.assemblies where name =

'fruitclr')

drop

assembly fruitclr;

gocreate

assembly fruitclr

from

'e:\fruitclr.dll

'with permission_set =

safe;

gocreate

function

tvf_fruit()

returns

table

( fruit_nbr

tinyint

, fruitcategory_nbr

tinyint

, categoryname

nvarchar(30

), fruitkind_nbr

tinyint

, kindname

nvarchar(30

), fruitname

nvarchar(30))

a***ternal name

[fruitclr

].userdefinedfunctions.tvf_fruit;

gocreate

function tvf_getfullname(@fruit_nbr

tinyint

) returns

nvarchar(max

) as external name [

fruitclr

].userdefinedfunctions.tvf_getfullname;

go

view code

執行結果:

下面可對比一下普通的sql語句與clr寫好的函式效率比較:

T SQL程式設計 使用者自定義函式 標量函式

在使用sql server的時候,除了其內建的函式之外,還允許使用者根據需要自己定義函式。根據使用者定義函式返回值的型別,可以將使用者定義的函式分為三個類別 如果使用者定義函式包含了單個select語句且語句可更新,則該函式返回的表也可更新,這樣的函式稱為內嵌錶值函式。如果使用者定義函式包含多個se...

C C 自定義函式 返回值

根據返回值型別來定義為int,並且在子函式結尾一定要寫上return result 需要返回的值 int main中需要定義乙個新的變數去接收子函式返回的值 全域性變數的生命期是永恆的,如果返回乙個區域性變數的位址會出現問題 變數在子函式中或者在if語句後出現都會隨著程式的執行時變數失效 inclu...

ORACLE建立自定義函式返回varchar型別

需求描述 兩張表,如下,需要查詢tmp1表中id new在tmp2中的name 方法一 好處 簡單,直接sql展示 劣處 如果主表資料量太大,十幾億的話,效能會大大下降,此時建議第二種方法 select a.id old,to char wm concat distinct a.id new id ...