R.D*_*R.D 24 sql-server sql-server-2005 user-defined-functions
我想做点什么
select * from tvfHello(@param) where @param in (Select ID from Users)
Run Code Online (Sandbox Code Playgroud)
kri*_*tof 40
您需要使用CROSS APPLY来实现此目的
select
f.*
from
users u
cross apply dbo.tvfHello(u.ID) f
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
根据 Kristof 的专业知识,如果您尝试获取多个值,我已经更新了此示例,例如您可以这样做:
select *
from HumanResources.Employee e
CROSS APPLY EmployeeById(e.EmployeeId)
WHERE e.EmployeeId in (5,6,7,8)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
51923 次 |
最近记录: |