繁体   English   中英

动态SQL插入值SQL 2008

[英]Dynamic SQL INSERT VALUES SQL 2008

在需要一个带有动态表名的过程的项目上工作。 需要解决如何将插入值查询写入表中。 这不是一个庞大的项目,因此间接费用等并不是问题。

尝试了几种变体,但它总是失败。

DECLARE @DynamicTableName NVARCHAR(100)
SET @DynamicTableName = 'DynamicTableName'


    INSERT @DynamicTableName
    (
        HolidayStartDate
      , HolidayEndDate
      , HolidayType
      , HolidayTypeID
      , StaffCode
      , StaffName
      , Notes
      , FTE
      , CreatedBy
      , CreatedDate
      , HolidayRequestID
    )
    VALUES
    (       @Para1,
            @Para2,
            @Para3,
            @Para4,
            @Para5,
            @Para5,
            @Para6,
            @Para7,  
            @Para8,
            @Para9, 
            @Para10
    )

您可以将Para1-n放到#Temp表中,然后执行动态插入。

这样做的好处是您没有解析或引用参数

DECLARE @DynamicTableName NVARCHAR(100)
SET @DynamicTableName = 'DynamicTableName'

Select  P1=@Para1,P2=@Para2,P3=@Para3,P4=@Para4,P5=@Para5,P6=@Para6,P7=@Para7,P8=@Para8,P9=@Para9,P10=@Para10 Into TempInsert 
Declare @SQL varchar(max) = '
Insert Into '+@DynamicTableName +'(
        HolidayStartDate
      , HolidayEndDate
      , HolidayType
      , HolidayTypeID
      , StaffCode
      , StaffName
      , Notes
      , FTE
      , CreatedBy
      , CreatedDate
      , HolidayRequestID
    ) Select * From #TempInsert'
Exec(@SQL)

编辑-我应该注意,我仅看到10个参数,但您有11个字段。

DECLARE @TableName NVARCHAR(100),@QueryStr NVARCHAR(MAX) = ''

SET @QueryStr = 'INSERT INTO ' +@TableName+ '(     
HolidayStartDate,HolidayEndDate,HolidayType, HolidayTypeID, StaffCode
, StaffName, Notes, FTE, CreatedBy, CreatedDate, HolidayRequestID)
VALUES ('+ @Para1 +','+ @Para2 +','+ @Para3 +','+ @Para4 +','+ @Para5 +','+  
@Para5 +','+ @Para6 +','+ @Para7 +','+ @Para8 +','+ @Para9 +','+ @Para10 +')'

 EXEC (@QueryStr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM