1
爲什麼我不能使用變量來命名新表?T-SQL創建表語句不會接受變量
作爲一個開始的SQL項目,我正在製作個人財務數據庫。每個帳戶在數據庫中都有相應的表格。還有一個列出所有當前帳戶的表格。請參閱下面的(簡化)代碼示例:
CREATE TABLE accountList
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[Name] NCHAR(30) NOT NULL UNIQUE,
[Active] BIT NOT NULL
)
INSERT INTO accountList(name, active)
VALUES
('Bank_One_Checking', 1);
CREATE TABLE Bank_One_Checking
(
[Id] BIGINT NOT NULL PRIMARY KEY IDENTITY,
[payee] NCHAR(30) NOT NULL UNIQUE,
[category] NCHAR(30) NOT NULL UNIQUE,
[amount] INT NOT NULL DEFAULT 0.00
)
此代碼有效。我想將帳戶名稱設置爲一個變量(因此它可以作爲參數傳遞給存儲過程)。請參見下面的代碼:在該代碼
DECLARE @accountName nchar(30);
SET @accountName = 'Bank_One_Savings';
INSERT INTO accountList(name, active)
VALUES
(@accountName, 1);
CREATE TABLE @accountName
(
[Id] BIGINT NOT NULL PRIMARY KEY IDENTITY,
[payee] NCHAR(30) NOT NULL UNIQUE,
[category] NCHAR(30) NOT NULL UNIQUE,
[amount] INT NOT NULL DEFAULT 0.00
)
6號線(CREATE TABLE @accountName)產生錯誤
@accountName附近的語法不正確,期待, 'ID',或 'QUOTEID' ''。 。
爲什麼不將它插入命令?
如果沒有別的東西,動態SQL將起作用。 – SteveCav
你不能使用表和列名稱的變量,因爲你需要使用動態sql – Roy
不要這樣做。這是糟糕的設計。這就是爲什麼這很難做到。您應該有一個Accounts表和一個Transactions表:Transaction表的每一行都應該引用一個Account.ID。 – Blorgbeard