使用INSERT INTO和可变数量的选定列

时间:2015-08-10 18:06:13

标签: sql sql-server sql-server-2008

当所选列来自Sql参数时,是否可以使用INSERT INTO SELECT

@selectedColumns varchar(1000),
@testInput1 varchar(100),
@testInput2 varchar(100)

Insert into Report
Select @selectedColumns
from Test
where @testInput1 = @testInput2;

我收到错误:Column name or number of supplied values does not match table definition,因为在生成存储过程时,这些值不会匹配。

@selectedColumns输入变量正在从.NET MVC控制器填充,其中的列以逗号分隔的字符串填充,如下所示:

"Column1, Column2, Column3"

因此,当您查看变量时它看起来像1列,但实际上是1到10之间的任何值(报表中的数量)。它们在报告表中都有匹配的列。

2 个答案:

答案 0 :(得分:0)

您可以创建商店程序并像这样执行查询

    create procedure insertdata(@selectedRows varchar(1000),
    @testInput1 varchar(100),
    @testInput2 varchar(100)
    }
   as
    begin
    Declare @query varchar(max)
    set @query='Insert into Report
    Select '+@selectedRows+
    'from Test where' +'@testInput1+' = '+@testInput2

    excute @query
    end

答案 1 :(得分:0)

是。您可以使用用户定义的表类型来执行此操作。