簡體   English   中英

使用 sp_executesql 執行時 SQL Server 不正確的語法異常

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

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