I have created a table valued return function which returns me a table . here is call of my function as follow
SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006)
and its working OK for me , now i want to use this function call in a select statment , so i can pass 16
which is basically employeeId
dynamically.
So i have decided to use inner join with table returned by that function . Like this
SELECT * FROM Employee as E INNER JOIN dbo.[StateFixedTaxesCalculation](3020,16,1,1006) as TC ON TC.EmployeeId=E.EmployeeId
but now how can i pass 16
as dynamic value of all employeeId
one by one .
Create a user-defined table type that corresponds to the table that you want to populate. Pass the user-defined table to the stored procedure as a parameter. Inside the stored procedure, select the data from the passed parameter and insert it into the table that you want to populate.
You can, however no any table. From documentation: For Transact-SQL functions, all data types, including CLR user-defined types and user-defined table types, are allowed except the timestamp data type.
use outer/cross apply
:
select * from Employee as E cross apply dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TC
if you still have to filter by TC.EmployeeId = E.EmployeeId
, you can do this with subquery:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With