簡體   English   中英

動態插入sql存儲過程

[英]Dynamic insert sql stored procedure

我有一個關於動態插入sql存儲過程的問題,因為我需要插入一個未知量(動態生成),

下面是它的寫法:

@Parameter as nvarchar(Max),
@SQLQuery as nvarchar(Max)

SET @SQLQuery = 'insert into <table>
(FieldOne,FieldTwo,FieldThree,GeneratedId,dateAdded,addedBy)
values '+@Parameter
EXEC sp_executesql @SQLQuery

當我嘗試使用以下值執行此存儲過程時:

@Parameter = (1,0,0,12345678123,"2016-03-22 23:26:25",123)
@SQLQuery = null

我什至嘗試(出於愚蠢的原因)嘗試以下值:

@Parameter = (1,0,0,12345678123,2016-03-22 23:26:25,123)
@SQLQuery = null

我從SQL Server得到以下錯誤

消息102,級別15,狀態1,第3行'23'附近的語法不正確。

(影響1行)

但是實際上沒有添加任何行。

我使用的表如下:

ID           (PK and autoincrement)
FieldOne:    tinyint
FieldTwo:    tinyint
FieldThree:  tinyint
GeneratedId: nvarchar(50)
dateAdded:   datetime
addedBy:     int

我似乎無法弄清楚我在做什么錯,

預先感謝大家的時間和協助。

您的日期變量應使用單引號引起來,而不要使用雙引號引起來。 試試看,它應該可以工作。

但.....

如果您特別想走這條(不尋常的)道路,我強烈建議您在sp_ExecuteSQL中使用參數化查詢支持-它會為您提供性能更好且通常更安全的查詢。

請訪問https://msdn.microsoft.com/zh-cn/library/ms188001.aspx ,以獲取有關如何將sp_ExecuteSQL用於參數化查詢的更多信息。

如果需要雙引號,請確保QUOTED_IDENTIFIER已啟用。 將QUOTED_IDENTIFIER設置為ON;

暫無
暫無

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

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