SQL如何往动态表中插入动态数据? 本帖最后由 meliujun 于 2014-06-12 11:23:14 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 -- 不知道楼主,弄这样,干嘛用?-- DROP TABLE [20140612];CREATE TABLE [20140612]([DU_D1] INT,[DU_D2] INT,[DG_Code] NVARCHAR(MAX))declare @DC_TABLE NVARCHAR(1000)=''declare @S_DN_TABLE varchar(20)=''declare @du_d1 smallintdeclare @du_d2 smallintdeclare @ret varchar(20)select @du_d1=100select @du_d2=200select @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_l)' PRINT @DC_TABLEEXEC sp_executesql @DC_TABLE,N'@du_d1 smallint,@du_d2 smallint,@RET_l varchar(20)',@du_d1=@du_d1,@du_d2=@du_d2,@RET_l=@RET; /*-- 结果 INSERT INTO [20140612] ([DU_D1] ,[DU_D2] ,[DG_Code]) VALUES ( cast(@du_d1 as smallint) , cast(@du_d2 as smallint) , @RET_l)(1 行受影响)*/ declare @DC_TABLE VARCHAR(1000)declare @S_DN_TABLE varchar(20)declare @du_d1 smallintdeclare @du_d2 smallintdeclare @ret varchar(20)select @du_d1=100select @du_d2=200select @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_TABLEEXEC(@DC_TABLE) 最终按照需求修改的地方有两处 第一将declare @du_d1 smallint declare @du_d2 smallint改为DECLARE @du_d1 varchar(8)DECLARE @du_d2 varchar(8) 第二将@RET改为 '''+@ret+''' SQL顶尖高手入,SQL查询语句问题 新建一个存储过程执行完成以后为什么对象管理器中没有? 请教材料采购计划表的SQL写法? 如何这样导入数据,判断两列如果相同就不导入了。 sql2000里备份的数据库文件怎么在2005里还原啊? 关于数据库字段设计的问题! 服务器间数据同步诚恳求助 SQL优化 sql查询 sql 求救!!! 求sql语句。。 SQL2008 修改链接服务器的远程密码 失败
CREATE TABLE [20140612]([DU_D1] INT,[DU_D2] INT,[DG_Code] NVARCHAR(MAX))declare @DC_TABLE NVARCHAR(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_l)'
PRINT @DC_TABLEEXEC sp_executesql @DC_TABLE
,N'@du_d1 smallint,@du_d2 smallint,@RET_l varchar(20)'
,@du_d1=@du_d1,@du_d2=@du_d2,@RET_l=@RET;
/*
-- 结果
INSERT INTO [20140612] ([DU_D1]
,[DU_D2]
,[DG_Code])
VALUES (
cast(@du_d1 as smallint)
, cast(@du_d2 as smallint)
, @RET_l)(1 行受影响)*/
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)
第二将@RET改为 '''+@ret+'''