Here is my issue. I need to create a temp table after executing dynamic SQL and passing params as follows
CREATE PROCEDURE SP1
@param1 varchar(50),
@param2 varchar(50)
AS
BEGIN
DECLARE @PDef varchar(300)
DECLARE @sql varchar(300)
DECLARE @localparam1 varchar(300)
DECLARE @localparam2 varchar(300)
SET @localparam1 = ....
SET @localparam2 = ....
SET @PDef = '@param1 varchar(50), @localparam1 varchar(300)'
SET @sql = 'SELECT * FROM TABL1 WHERE COL1 = @param1, COL2 in (@localparam1)'
EXEC sp_Executesql @sql, @PDef,
@param1 = @param1, @localparam1 = @localparam1
The above works. How do I get the results into a temp table?
I tried
CREATE TABLE #T1 (col1 varchar(50), col2 varchar(50) )
INSERT INTO #T1
EXECUTE @sql -- didn't work
INSERT INTO #T1
EXECUTE (@sql, @PDef, @param1 = @param1, @localparam1 = @localparam1) -- didn't work either
EDIT: Had Looked at the following samples while using EXECUTE Dynamic SQL results into temp table in SQL Stored procedure and hence used EXECUTE The accepted answer was: INSERT into #T1 execute ('execute ' + @SQLString ) omit the 'execute' if the sql string is something other than a procedure
Now see the comments to that accepted answer that question that accepted answer :-)