【发布时间】:2020-01-09 09:17:58
【问题描述】:
请帮我找出错误。我认为这是由于撇号,但我不知道如何更正。
我的代码返回错误:
消息 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;
【问题讨论】:
-
sp_executesql允许您使用参数。您应该重新编写脚本以使用它们。 -
该代码是特定于产品的吗?您使用的是哪个 dbms? (也许是 SQL Server?)
标签: sql-server tsql dynamic-sql