2011年8月3日 星期三

[SQL] 資料表值函式 CLR

  這跟SVF很像,但他回傳的是資料表的使用者定義函數,
一樣從SQL Server 2005 開始都可以使用。

Ps.對於資料表値函式而言,傳回資料表類型的資料行不得包含時間戳記資料行或非 Unicode 字串資料類型資料行 (例如,charvarchar 和 text)。 不支援 NOT NULL 條件約束。

 
這範例是依照formID抓出資料表相對應的Tree 

在資料庫裡的 可程式性/函數/資料表值函式 按右鍵就可以新增了

不過這個似乎只有參考價值了 XD


USE [DataBase]
GO
/****** Object:  UserDefinedFunction [dbo].[f_GetFormTree]    Script Date: 08/03/2011 14:38:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Function [dbo].[f_GetFormTree] (
@PID int
)
Returns @t table (
FormID int,
FormName varchar(50),
ParentID int,
LevelID int,
Seq smallint
)
As
Begin
Insert @t Select ft.FormID, ft.FormName, ft.ParentID, ft.LevelID, ft.Seq
From FormTable ft
Where ft.FormID = @PID
And ft.Status = 0
While @@rowcount > 0
Insert @t Select a.FormID, a.FormName, a.ParentID, a.LevelID, a.Seq
From FormTable As a
Inner Join @t As b On a.ParentID = b.FormID And a.Status = 0
And a.FormID Not In (Select FormID From @t)
Order By a.LevelID, a.Seq
Return
End
 

沒有留言:

張貼留言