sql-server - 无法在 SQL Server 中的 WHERE 子句之后放置 OPTION(重新编译)
问题描述
我试图将 Option Recompile 放在 WHERE 子句之后,但由于语法错误而不断失败:Incorrect Syntax near recompile. Expecting ( or SELECT
这是我的sql代码:
IF EXISTS (SELECT 1 FROM Table1 WHERE Code = @Code AND Activity = 'T' OPTION (RECOMPILE))
我知道在很多情况下,如果没有 AND 条件,它会起作用。我已经在网上搜索了一个没有任何有用信息的解决方案。有任何想法吗?
解决方案
这是 SQL 语法的限制。
无法将查询提示放置在IF
.
您可以使用
DECLARE @Result BIT
SELECT @Result = CASE
WHEN EXISTS (SELECT 1
FROM Table1
WHERE Code = @Code
AND Activity = 'T') THEN 1
ELSE 0
END
OPTION (RECOMPILE);
IF @Result = 1
BEGIN
TODO:
END
如果你有一个索引Code, Activity
或者Activity, Code
你不应该需要这个,那么它总是可以使用一个简单的搜索计划
推荐阅读
- powershell - 通过 PowerShell 在运行过程中更改 numa 组
- javascript - 使用 geocodeapi.io 的 JQuery 地址自动完成
- drupal - 我的自定义主题的库无法加载 - Drupal 8
- javascript - 异步函数,promise
- javascript - 对数组对象中的多个字段进行排序
- powershell - POwershell CI/CD 错误 Disconnect-AzAccount -Scope Process -ErrorAction Stop , Clear-AzContext -Scope Process -ErrorAction Stop
- javascript - 如何在jQuery“添加另一个字段”功能中更改名称值
- python - Tkinter - 我的自定义图标在打开时“扰乱”顶级窗口
- java - java.lang.NumberFormatException:对于输入字符串:“” - 当我尝试将空字符串解析为整数时
- javascript - 事件keyup vueJS