Lige en lille rettelse (for det virker ikke):
declare @sql varchar(200)
select @sql = dbo.fn_GetListOfProductMain_ParamID(@param)
exec sp_executesql @sql
http://www.sommarskog.se/dynamic_sql.htmlCREATE PROCEDURE general_select1 @tblname sysname,
@key varchar(10) AS
DECLARE @sql nvarchar(4000)
SELECT @sql = ' SELECT col1, col2, col3 ' +
' FROM dbo.' + quotename(@tblname) +
' WHERE keycol = @key'
EXEC sp_executesql @sql, N'@key varchar(10)', @key
Bemærk den smarte måde parameteren angives. Man skal altid prøve at lave sine scripts parametiserede. Altså undgå scripts med "where ID = 223" men i stedet skrive "where ID = @ID" og angive værdien som parameter. Det har indvirkning på SQL-serverens execution-plan som bliver genereret på ny hver gang man har hårdkodet værdien mens den parametiserede genbruges.