SQL如何往动态表中插入动态数据?zx执行不了,报错,举例如下
declare @DC_TABLE VARCHAR(1000)
declare @S_DN_TABLE varchar(20)
declare @du_d1 smallint
declare @du_d2 smallint
declare @ret varchar(20)
select @du_d1=100
select @du_d2=200
select @ret='test'
select @@S_DN_TABLE ='20140612'
SELECT @DC_TABLE=' INSERT INTO '
SELECT @DC_TABLE=@DC_TABLE+ @S_DN_TABLE
SELECT @DC_TABLE=@DC_TABLE +
' ([DU_D1]
,[DU_D2]
,[DG_Code])
VALUES (
cast(@du_d1 as smallint)
, cast(@du_d2 as smallint)
, @RET)'
EXEC(@DC_TABLE)
EXEC(@DC_TABLE)
1:必须声明标量变量 "@du_d1"。
2:报错,在此上下文中不允许使用名称 "@RET"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
------解决方案--------------------
declare @DC_TABLE VARCHAR(1000)
declare @S_DN_TABLE varchar(20)
declare @du_d1 smallint
declare @du_d2 smallint
declare @ret varchar(20)
select @du_d1=100
select @du_d2=200
select @ret='test'
select @S_DN_TABLE ='[20140612]'
SELECT @DC_TABLE=' INSERT INTO '
SELECT @DC_TABLE=@DC_TABLE+ @S_DN_TABLE
SELECT @DC_TABLE=@DC_TABLE + ' ([DU_D1],[DU_D2],[DG_Code])
VALUES (' + RTrim(@du_d1) + ',' + RTrim(@du_d2) + ',''' + @RET + ''')'
--select @DC_TABLE
EXEC(@DC_TABLE)