用戶自定義的函數有兩類:表值函數、標量值函數。
表值函數:返回值是數據表的函數 調用方式 select b.* from tableA a accross apply Fun_BiaoZhiFun(taskid) b
用戶定義表值函數返回 table 數據類型,表是單個 SELECT 語句的結果集。
(1)只能返回Table,returns后邊一定是table
(2)as后面沒有begin/end,只有一個return語句返回特定的記錄
對於多語句表值函數,在 BEGIN...END 語句塊中定義的函數體包含一系列 Transact-SQL 語句,這些語句可生成行並將其插入將返回的表中。
(1)returns后面直接定義返回的表類型,首先是定義表名,表明前面要加@,然后是關鍵字TABLE,最后是表的結構。(實質上是定義了一個表變量)
(2)在begin/end語句塊中,直接將需要返回的結果insert到returns定義的表中就可以了,在最后return時,會將結果返回。
(3)最后只需要return,return后面不跟任何變量。(返回的是表變量里面的數據)
標量值函數:返回值是單個值的函數 .函數的調用方式 select dbo.Fun_BiaoLiangZhiFun(taskid) from sys_inst_prcs where taskid='';
(1)必須使用兩部分組成函數的名字來調用函數,即所有者.對象名,如dbo.F3_GetMax(2,3)
(2)所有的傳入參數前必須加@
(3)不要寫漏和寫錯關鍵字,如as,returns,return
(4)returns后面不是跟一個變量,而是跟變量的返回值類型
(5)在begin/end語句塊中,使用的是return