动态查询执行带有2个参数的插入

时间:2019-01-21 09:21:32

标签: sql sql-server tsql

我有以下查询:

create table #TempDadosExport 
    (defprodutoid int, nome varchar(250), Categoria varchar(250),tipoorigem varchar(250),Campanha varchar(250), PopUpId int);

set @sql = 'SELECT * from #Temp where ' + (SELECT Condicao FROM TBL_PDOC_SFA_PopUps_Principal WHERE PopUp_Id = @countTable); insert into #TempDadosExport(defprodutoid, nome, Categoria,tipoorigem,Campanha)

EXECUTE sp_executesql @sql

但是我需要将@countTable添加到PopUpId列中,但是我无法使用Insert和Values来完成此操作,因为我使用的是execute sql,是否可以同时插入它们在同一张桌子上?

1 个答案:

答案 0 :(得分:0)

用简短的描述和错误的格式代码很难理解您的问题,但是如果我正确地假设您当前的脚本运行良好,那么您还需要将PopID添加到插入中(将其作为参数传递)

DECLARE @sql NVARCHAR(MAX)
 DECLARE @CountTable INT
 DECLARE @ParamDefinition NVARCHAR(MAX)

 CREATE TABLE #TempDadosExport (
    defprodutoid INT, 
    nome varchar(250), 
    Categoria varchar(250),
    tipoorigem varchar(250),
    Campanha varchar(250), 
    PopUpId int)

SET @sql = N'
    SELECT 
        defprodutoid, 
        nome, 
        Categoria,
        tipoorigem,
        Campanha, 
        @PopUpId 
    FROM #Temp' 

SELECT @SQL = @SQL + N'
WHERE ' + Condicao 
FROM TBL_PDOC_SFA_PopUps_Principal 
WHERE PopUp_Id = @countTable

SET @ParamDefinition = N'@PopUpID INT'

INSERT #TempDadosExport(defprodutoid, nome, Categoria,tipoorigem,Campanha, PopUpId)
EXECUTE sp_executesql @sql, @ParamDefinition, @PopUpID = @CountTable