有没有什么办法可以将我们的表命名为我们的局部变量值(T-SQL)

时间:2013-11-26 09:53:23

标签: sql-server-2008 tsql

试着这段代码.. 声明一个变量,而不是使用强制转换添加GETDATE(),以便表名是唯一的...而不是将现有表中的所有数据插入新的backuptbl i jux中。

    begin
    declare @st varchar(200);

    SET @st = 'tblNameBackup_'+CAST(getdate() as varchar(100));
    PRINT @st
    create table mytbl -- <<-- i wish to set my table name as @st
    (
    tID int,
    tName nchar(20)
    )
    select * into mytbl from thet-able-whose-backup-to-be-taken;
    end

实际上我希望在每次交易时都备份我的桌子,因此我正在尝试这个...我知道这不是真实的情况(因为如果我们能做到这一点,我也在练习这个)希望你理解我的问题thanx任何帮助

1 个答案:

答案 0 :(得分:0)

如果我理解你是正确的,你需要制作动态SQL,然后执行:

类似的东西:

declare @st varchar(200);

    SET @st = 'tblNameBackup_'+CAST(getdate() as varchar(100));
    EXEC('create table ' + @st + '
    (
    tID int,
    tName nchar(20)
    )
    select * into mytbl from thet-able-whose-backup-to-be-taken;');

注意注射的可能性,而不仅仅是EXEC,你可以将它包装在sp_executesql或类似的中。这只是为了说明方法。