一。sql server 的三種自定義函式
「自定義函式」是我們平常的說法,而「使用者定義的函式」是 sql server 中書面的說法。
sql server 2000 允許使用者建立自定義函式,自定義函式可以有返回值。
自定義函式分為:標量值函式或表值函式
錶值函式又可分為:內嵌錶值函式(行內函式)或多語句函式
標量值函式示例
create function dbo.foo()
returns int
as
begin
declare @n int
select @n=3
return @n
endcreate function get***(@*** int)
returns varchar(2)-- 用nvarchar(1)
as -- nvarchar:不管是乙個字元還是乙個漢字,都存為2個位元組
begin -- varchar:漢字是2個位元組,其他字元存為1個位元組
declare @s*** varchar(2)-- 用nvarchar(1)
if(@***=1)
set @s***='男'
else
set @s***='女'
return (@s***)
end呼叫:
select id,username,dbo.get***(***) as *** ,loginnum from t_user
內嵌錶值函式示例
create function dbo.foo()
returns table
as
return select id, title from msgs
內嵌錶值函式只有乙個 select 語句。
多語句錶值函式示例(部分)
create function findusers (@userid int )
returns @finduser table (id int primary key, username varchar(30), regdatetime datetime,loginnum int)
asbegin
insert into @finduser select id, username,regdatetime,loginnum from t_user where id=@userid
return
end
呼叫:
select * from findusers(6)
注意其 returns 部分。
多語句函式的主體中允許使用以下語句。未在下面的列表中列出的語句不能用在函式主體中。
二.如何呼叫自定義函式
呼叫自定義函式(使用者定義的函式)和呼叫內建函式方式基本相同, 示例
select *
select dbo.sta(cnt) from tbl示例
select *
from fn_mytablefunc( 123.09, n'o''neill' )
三。儲存過程和自定義函式的區別
儲存過程(使用者定義的儲存過程)和自定義函式(使用者定義的函式)的區別,在網上已經有討論過,但有些顯得過於零散,有些又篇幅過長不能保證每個人都細心閱讀。這裡作乙個歸納,當然只是應用層面的,可能不全面。
SQL 使用者自定義函式
使用者自定義函式是 sql server 的資料庫物件,它不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存過程等的程式段中使用,也可以像儲存過程一樣通過 execute 命令來執行。使用者自定義函式中儲存了乙個 transact sql 例程,可以返回一定的值。在sql s...
SQL 使用者自定義函式
使用者自定義函式是 sqlserver 的資料庫物件,它不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存過程等的程式段中使用,也可以像儲存過程一樣通過 execute 命令來執行。使用者自定義函式中儲存了乙個 transact sql 例程,可以返回一定的值。在sqlser...
建立使用者自定義函式 SQL
建立使用者自定義函式 標量函式 create function dbo.bmrs bmh as int returns int asbegin declare bmrs int select bmrs count 工號 from 銷售人員 where 部門號 bmh return bmrs endg...