日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql server 自定义函数的使用

發布時間:2023/12/1 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql server 自定义函数的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
sql server 自定義函數的使用

自定義函數

?

用戶定義自定義函數像內置函數一樣返回標量值,也可以將結果集用表格變量返回

用戶自定義函數的類型:

標量函數:返回一個標量值

表格值函數{內聯表格值函數、多表格值函數}:返回行集(即返回多個值)

?

1、標量函數

Create function 函數名(參數)

Returns 返回值數據類型

[with {Encryption | Schemabinding }]

[as]

begin

SQL語句(必須有return 變量或值)

?

End

?

Schemabinding :將函數綁定到它引用的對象上(注:函數一旦綁定,則不能刪除、修改,除非刪除綁定)

?

?

Create function AvgResult(@scode varchar(10))

Returns real

As

Begin

?? Declare @avg real

?? Declare @code varchar(11)

?? Set @code=@scode + ‘%’

?? Select @avg=avg(result) from LearnResult_baijiali

Where scode like @code

Return @avg

End

?

執行用戶自定義函數

select 用戶名。函數名 as 字段別名

select dbo.AvgResult(‘s0002’) as result

?

用戶自定義函數返回值可放到局部變量中,用set ,select,exec賦值

declare @avg1 real ,@avg2 real ,@avg3 real

select @avg1= dbo.AvgResult(‘s0002’)

set @avg2= dbo.AvgResult(‘s0002’)

exec @avg3= dbo.AvgResult ‘s0002’

select @avg1 as avg1 ,@avg2 as avg2 ,@avg3 as avg3

?

函數引用

?

create function code(@scode varchar(10))

returns varchar(10)

as

begin

declare @ccode varchar(10)

set @scode = @scode + ‘%’

select @ccode=ccode from cmessage

?? where ccode like @scode

return @ccode

end

?

select name from class where ccode = dbo.code(‘c001’)

?

2、表格值函數

a、 內聯表格值函數

格式:

create function 函數名(參數)

returns table

[with {Encryption | Schemabinding }]

as

return(一條SQL語句)

?

create function tabcmess(@code varchar(10))

returns table

as

return(select ccode,scode from cmessage where ccode like @ccode)

?

b、 多句表格值函數

?? create function 函數名(參數)

?? returns 表格變量名table (表格變量定義)

?? [with {Encryption | Schemabinding }]

as

?? begin

??? SQL語句

?? end

?

?多句表格值函數包含多條SQL語句,至少有一條在表格變量中填上數據值

?表格變量格式

returns @變量名 table (column 定義| 約束定義 [,…])

對表格變量中的行可執行select,insert,update,delete , 但select into 和 insert 語句的結果集是從存儲過程插入。

?

Create function tabcmessalot (@code varchar(10))

Returns @ctable table(code varchar(10) null,cname varchar(100) null)

As

Begin

Insert @ctable

Select ccode,explain from cmessage

Where scode like @code

return

End

?

Select * from tabcmessalot(‘s0003’)

?

來自:http://hi.baidu.com/datachina/blog/item/801def0366c4e7ea09fa9344.html

下面是我從別的地方弄的一個例子,淺顯易懂:

編寫一個函數,該函數,可以通過輸入借書時間來判斷是否到期,當借閱時間大于30天,返回已經過期;否則返回還未到期。

CREATE FUNCTION IsDateout(@BDate datetime)
returns nvarchar(20)
AS
BEGIN
??? DECLARE @myresult nvarchar(20)
??? IF (datediff(day,@BDate,getdate())>30)
??? BEGIN
??? SET @myresult='已過期'
??? end
??? else???
??? begin
??? set @myresult='未到期'
??? end
??? RETURN (@myresult)
END

SELECT dbo.IsDateout(cast('2009-12-17' AS datetime))--結果已過期
SELECT dbo.IsDateout(cast('2010-12-17' AS datetime))--結果未到期

轉載于:https://www.cnblogs.com/firstdream/p/5168002.html

總結

以上是生活随笔為你收集整理的sql server 自定义函数的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。