处理需要具有动态表名称的过程的项目。需要弄清楚如何将插入值查询写入表中。不是一个庞大的项目,所以开销也不是问题。
尝试了几种变化,但它总是会失败。
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
)
答案 0 :(得分:1)
您可以将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个字段。
答案 1 :(得分:0)
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)