2013-11-26 71 views
0

IM特林這段代碼.. declareing一個變量,並且比鑄造加GETDATE()使表名是唯一的..比從現有的表中插入的所有數據到新的backuptbl我jux做..有什麼辦法,我們可以命名我們的表作爲我們的局部變量值(T-SQL)

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的任何幫助

回答

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的或相似的。這只是爲了說明方法。

相關問題