Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Inner функция возвращающая табл. значение

$
0
0
Всем привет.
Есть табличка
CREATE TABLE [dbo].[Works](
	[ID_work] [int] IDENTITY(1,1) NOT NULL,
	[Parent] [int] NOT NULL ,
	[WorkName] [varchar](max) NOT NULL)

В ней хранится древовидная структура работ.
Написала функцию, которая по id работы возвращает все родительские работы.

CREATE FUNCTION [dbo].[GetParentWork] (@idwork int)
RETURNS @works TABLE (ID_Work int)  
BEGIN 

WITH wks (ID_Work, Parent)
AS
(
    SELECT ID_work, Parent
    FROM dbo.Works
    WHERE ID_work=@idwork
    UNION ALL
    SELECT d.ID_Work, d.Parent
    FROM dbo.Works AS d
    INNER JOIN wks AS p ON p.Parent = d.ID_work
)

Insert Into @works
SELECT ID_work FROM wks

return
END

Все работает, но вот как ее использовать для нескольких работ не понимаю. Т.е. у меня есть выборка каких-то работ и мне нужно к каждой работе получить еще и родительские. Что-то типа такого
Select x.ID_Work
From UsedWokrs w
Inner Join [dbo].[GetParentWork](w.ID_work) x

Помогите пожалуйста!

PS
Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64)
Jun 17 2016 19:14:09
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 14393: )

Viewing all articles
Browse latest Browse all 7251

Trending Articles