[英]SQL SERVER sp_executesql incorrect syntax near ')'
[英]SQL Server incorrect syntax exception when executing with sp_executesql
我正在從觸發器調用一個過程並將一些參數從觸發器傳遞到過程。 參數是:
@table_name varchar(128), @where_str varchar(200)
在該過程中,我使用sp_executesql
執行命令。 我想,我使用了不正確的語法,但我找不到解決方案。
這是執行的查詢:
SET @SqlString = N'update @ptable_name set RepSt=2 @pwhere_str';
SET @ParmDefinition = N'@ptable_name varchar(128), @pwhere_str varchar(200)';
execute sp_executesql @SqlString, @ParmDefinition,
@ptable_name = @table_name, @pwhere_str = @where_str;
傳遞的參數是這樣的:
@table_name
是[MyTable]
@where_str = N'where MyColumnA = '+@oldMyColumnA+N' AND MyColumnB = '+@oldMyColumnB+N' AND MyColumnC = '+@oldMyColumnC;
SET @SqlString =N'update ' + @ptable_name + ' set RepSt=2 @pwhere_str';
你最終執行的是這樣的:
DECLARE @ptable_name VARCHAR(128) = 'your_Table'
, @pwhere_str VARCHAR(200) = 'Your_where_clause'
UPDATE @ptable_name
SET RepSt=2
WHERE @pwhere_str
這不工作,你需要更換變量在執行SQL語句:
SET @SqlString = N'update @ptable_name set RepSt=2 @pwhere_str';
SET @SqlString = REPLACE(REPLACE(@SqlString, '@ptable_name', @table_name), '@pwhere_str', @where_str)
execute sp_executesql @SqlString
(很臟,但這就是想法。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.