Как передать параметры Табличной функции

24
задан Michał Powaga 7 May 2012 в 13:58
поделиться

3 ответа

Необходимо использовать , КРЕСТ ПРИМЕНЯЕТСЯ для достижения этого

select 
    f.* 
from 
    users u
    cross apply dbo.tvfHello(u.ID) f
40
ответ дан kristof 28 November 2019 в 23:28
поделиться

Следующие работы в базе данных AdventureWorks:

CREATE FUNCTION dbo.EmployeeByID(@employeeID int)
RETURNS TABLE
AS RETURN
(
    SELECT * FROM HumanResources.Employee WHERE EmployeeID = @employeeID
)
GO


DECLARE @employeeId int

set @employeeId=10

select * from 
EmployeeById(@employeeId) 
WHERE @EmployeeId in (SELECT EmployeeId FROM HumanResources.Employee)

РЕДАКТИРОВАНИЕ

На основе экспертных знаний Kristof я обновил этот образец, если Ваша попытка получить несколько значений Вы могли бы, например, сделать:

select * 
from HumanResources.Employee e
CROSS APPLY  EmployeeById(e.EmployeeId)
WHERE e.EmployeeId in (5,6,7,8)
4
ответ дан JoshBerke 28 November 2019 в 23:28
поделиться

Это смотрит хорошо мне, за исключением того, что необходимо всегда снабжать префиксом функции их схему (обычно dbo). Таким образом, запрос должен быть:

SELECT * FROM dbo.tvfHello(@param) WHERE @param IN (SELECT ID FROM Users)
0
ответ дан Matt Hamilton 28 November 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: