动态SQL的错误,可能是由于撇号(SQL SERVER)

问题描述 投票:-1回答:1

[请帮助我发现错误。我认为这是由于撇号引起的,但我不知道如何纠正。

我的代码返回错误:

Msg 156,第15级,状态1,第3行关键字“或”附近的语法不正确。

Use YEAR_TO_DATE;

Declare @policy NVARCHAR(MAX);
Declare @account_list NVARCHAR(MAX);
Declare @sql NVARCHAR(MAX);
Set @policy ='TTY%';
Set @account_list='18000,19000';

Set @sql = 
'Select
case
when [Debit_Account] in ('+@account_list+') and ([policy1] like '+@policy+' or [policy2] like '+@policy+' or [policy3] like '+@policy+') then -[Amount]
when [Credit_Account] in ('+@account_list+') and ([policy1] like '+@policy+' or [policy2] like '+@policy+' or [policy2] like '+@policy+') then [Amount]
else 0
end as [Amount]
from CTGS 
where [Debit_Account] in ('+@account_list+') or [Credit_Account] in ('+@account_list+')';

EXEC sp_executesql @sql;
sql-server tsql dynamic-sql
1个回答
1
投票
附近的语法不正确

您忘了在动态SQL字符串中添加字符串定界符引号。

© www.soinside.com 2019 - 2024. All rights reserved.