簡體   English   中英

如何創建一個名為參數的表?

[英]How to create a table with name as parameter?

我沒有在msdn的文檔中找到,如何插入執行語句表名的參數。 通過推理的平價我試過:

var myNameOfTable = "wantedName";
db.Execute("CREATE TABLE @0 (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)", myNameOfTable);

但我得到錯誤:

[令牌行號= 1,令牌行偏移= 14,令牌錯誤= @ 0]

請幫幫我 - 如何創建名稱作為參數的表?

您通過選項提供表名,而不是使用字符串連接/ string.Format來進行查詢。 您至少使用Paramerized Query或更好地使用存儲過程而不是內聯查詢,因為它們可能導致sql注入 您可以閱讀此帖子存儲過程與內聯SQL進行比較。

db.Execute("CREATE TABLE " + myNameOfTable + " (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)" );

您正在使用的語法可以使用string.Format來實現

db.Execute(string.Format("CREATE TABLE {0} (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)", myNameOfTable));

我同意我寧願在這里使用合法的參數。 您可以創建一個以表名傳遞的存儲過程,想到這樣的事情:

CREATE PROCEDURE dbo.usp_CreateTable
    @TableName VARCHAR(50)
AS
BEGIN

    DECLARE @SqlScript NVARCHAR(4000)
    SET @SqlScript = 'CREATE TABLE ' + @TableName + ' (ID INT IDENTITY (1,1) NOT NULL)'

    EXEC sp_executesql @SqlScript

END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM