I have an SQL function which returns the minimum and maximum selling price of an item. I'd like to make a query which gets other StockItem columns together with it's selling price
like so:
SELECT i.StockItemID ii,
i.Name,
i.Code,
pli.SellingPrice AS MinSellingPrice,
pli.StandardSellingPrice AS MaxSellingPrice,
i.WebDetailedDescription,
i.WebAdditionalInfo,
i.FeaturedItemDescription
FROM SC_StockItem AS i,
func_GetPrice(17, i.StockItemID, 5) pli
However this gives an error:
Msg 4104, Level 16, State 1, Line 12 The multi-part identifier "i.StockItemID" could not be bound.
any idea how I can do this ?
Thanks in advance
CREATE FUNCTION dbo. SplitInts ( @List VARCHAR(MAX), @Delimiter VARCHAR(255) ) RETURNS TABLE AS RETURN ( SELECT Item = CONVERT(INT, Item) FROM ( SELECT Item = x.i.value('(./text())[1]', 'varchar(max)') FROM ( SELECT [XML] = CONVERT(XML, '<i>' + REPLACE(@List, @Delimiter, '</i><i>') + '</i>'). query('.
You can declare table-valued variables within dynamic Transact-SQL statements and pass these variables as table-valued parameters to stored procedures and functions.
Dynamic SQL queries are those built at runtime based on one or more variable values. To execute those queries, we must concatenate them into one SQL statement and pass them as a parameter to the sp_executesql stored procedure.
A TEMP Table of User Defined Table Type has to be created of the same schema as that of the Table Valued parameter and then it is passed as Parameter to the Stored Procedure in SQL Server.
If that is a table valued function, then you can use OUTER APPLY
:
select i.StockItemID ii,
i.Name,
i.Code,
pli.SellingPrice as MinSellingPrice,
pli.StandardSellingPrice as MaxSellingPrice,
i.WebDetailedDescription,
i.WebAdditionalInfo,
i.FeaturedItemDescription
from SC_StockItem as i
OUTER APPLY func_GetPrice(17, i.StockItemID, 5) pli
From MSDN:
The APPLY operator allows you to invoke a table-valued function for each row returned by an outer table expression of a query.
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