通俗來說:數據庫
聽名字就知道區別了
表值函數返回的是一張表結果,就和一個select查詢語句同樣,只不過裏面帶入了參數或者很複雜;
標量值函數返回的只是一個值函數
一 、表值函數又分爲內聯函數與多語句函數spa
(1)內聯函數就是沒有函數主體表是單個 SELECT。code
下面是一個不帶輸入參數的表值函數orm
create function tvpoints() returns table as return ( select * from tb_users );
調用-這個結果返回的是一張表:blog
select * from tvpoints()
(2)下面是帶參的內聯表值函數get
對於多語句表值函數,在 BEGIN...END 語句塊中定義的函數體包含一系列 Transact-SQL 語句,這些語句可生成行並將其插入將返回的表中。
如下示例建立了一個表值函數.io
create function tvpoints() returns @points table (x float, y float) as begin insert @points values(1,2); insert @points values(3,4); return; end
調用-查詢到的是一張表table
select * from tvpoints()
(3)標量函數(返回一個具體類型的值而不是一張表了)function
CREATE FUNCTION FUN_DataFormat (@strDate datetime) RETURNS varchar(20) AS BEGIN declare @date varchar(20) set @date = DATENAME(YY,@strDate)+'年'+Convert(VARCHAR,MONTH(@strDate))+'月'+Convert(VARCHAR,DAY(@strDate))+'日' return @date END
能夠經過select dbo.FUN_DataFormat(getdate())來使用。(用的時候必定要在函數前面添加一個dbo或者的話數據庫語句報錯的會提示不認識的)