本帖最后由 meliujun 于 2014-06-12 11:23:14 编辑

解决方案 »

  1.   

    -- 不知道楼主,弄这样,干嘛用?-- 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 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 行受影响)*/
      

  2.   


    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)
      

  3.   

    最终按照需求修改的地方有两处  第一将declare @du_d1 smallint    declare @du_d2 smallint改为DECLARE @du_d1 varchar(8)DECLARE @du_d2 varchar(8)
                                              第二将@RET改为 '''+@ret+'''