web-dev-qa-db-fra.com

passer le paramètre dans la fonction de valeur de table en utilisant l'instruction select

J'ai créé une fonction de retour de valeur de table qui me renvoie une table. voici l'appel de ma fonction comme suit

SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006)

et ça marche bien pour moi, maintenant je veux utiliser cet appel de fonction dans un état sélectionné, donc je peux passer 16 qui est essentiellement employeeId dynamiquement.

J'ai donc décidé d'utiliser la jointure interne avec la table renvoyée par cette fonction. Comme ça

SELECT * FROM Employee as E
INNER JOIN  dbo.[StateFixedTaxesCalculation](3020,16,1,1006) as TC   ON TC.EmployeeId=E.EmployeeId

mais maintenant comment passer 16 comme valeur dynamique de tous les employeeId un par un.

36
rahularyansharma

utilisation outer/cross apply :

select *
from Employee as E
    cross apply dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TC

si vous devez toujours filtrer par TC.EmployeeId = E.EmployeeId, vous pouvez le faire avec la sous-requête:

select *
from Employee as E
    cross apply (
        select TT.*
        from dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TT
        where TT.EmployeeId = E.EmployeeId
    ) as TC
60
Roman Pekar