[英]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.