2017年4月6日 星期四

[MSSQL] 動態Create Table

比較直覺性的寫法,宣告一個變數當作Table名稱,直接將這個變數用在Create Table上,以下有兩種寫法一種可以一種不行

直接利用變數Create Table,這種寫法是不行的因為@TALBE_NAME本身也是欄位不能直接用在CREATE TABLE語法上。
   
DECLARE @TALBE_NAME NVARCHAR(10)
SET @TALBE_NAME = 'T'+ (SELECT CONVERT(VARCHAR(8),GETDATE(),112))

IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=@TALBE_NAME) BEGIN 
    CREATE TABLE @TALBE_NAME(
        EMPLOYEE_NO NVARCHAR(20)
    )
END


直接利用變數把語法用字串串起來,再利用EXECUTE執行Create Table,這種寫法是可以達到目的,但是可能因為欄位眾多導致畫面凌亂需要做好排版,方便後續維護人員閱讀。
   
DECLARE @TALBE_NAME NVARCHAR(10)

SET @TALBE_NAME = 'T'+ (SELECT CONVERT(VARCHAR(8),GETDATE(),112))

IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=@TALBE_NAME) BEGIN 
    EXECUTE ('CREATE TABLE  '+@TALBE_NAME+' (    EMPLOYEE_NO NVARCHAR(20))')
END




沒有留言:

張貼留言