昨天有學習了返回表自定義函式《clr table-valued函式》今天學習另乙個,實現返回標量(scalar-valued) function。
這個標量函式獲取分類全名。
selectview code[categoryname]+
'--'+
[kindname]+
'--'+
[fruitname
]from
[dbo
].tvf_fruit() where
[fruit_nbr]=
@fruit_nbr
可複製**:
[sqlfunction(dataaccess =dataaccesskind.read)]view codepublic
static
sqlstring tvf_getfullname(sqlbyte fruit_nbr)
編譯為dll。然後部署至sql,可執行下面**,也可以參考前幾篇的手動在microsoft sql server management stuido下進行。更詳細《簡單建立與佈署clr儲存過程》
可複製**:
ifview codeexists (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
執行結果:
下面可對比一下普通的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 ...