当前位置: 代码迷 >> Sql Server >> SQL怎么往动态表中插入动态数据
  详细解决方案

SQL怎么往动态表中插入动态数据

热度:48   发布时间:2016-04-24 10:34:07.0
SQL如何往动态表中插入动态数据?
本帖最后由 meliujun 于 2014-06-12 11:23:14 编辑
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)
  相关解决方案