sql-server - procedimientos - pasar tabla como parametro en stored procedure sql server
Cómo pasar parámetros a la función de valores de tabla (3)
Quiero hacer algo como
select * from tvfHello(@param) where @param in (Select ID from Users)
Eso se ve bien para mí, excepto que siempre debe prefijar sus funciones con su esquema (generalmente dbo). Entonces la consulta debería ser:
SELECT * FROM dbo.tvfHello(@param) WHERE @param IN (SELECT ID FROM Users)
Los siguientes trabajos en la base de datos 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)
EDITAR
Basado en la experiencia de Kristof, he actualizado esta muestra si intenta obtener múltiples valores que podría, por ejemplo, hacer:
select *
from HumanResources.Employee e
CROSS APPLY EmployeeById(e.EmployeeId)
WHERE e.EmployeeId in (5,6,7,8)
Debe usar CROSS APPLY para lograr esto
select
f.*
from
users u
cross apply dbo.tvfHello(u.ID) f