首页 > 解决方案 > 动态查询使用 2 个参数执行插入

问题描述

我有以下查询:

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

但我需要添加@countTablePopUpId列,但我不能用插入和值来做,因为我使用的是执行 sql,是否可以在同一个表中同时插入它们?

标签: sqlsql-servertsql

解决方案


使用弱描述和错误格式的代码很难理解您的问题,但如果我正确假设您当前的脚本运行良好,但您还需要将 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

推荐阅读