我试图将 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))
Run Code Online (Sandbox Code Playgroud)
我知道在很多情况下,如果没有 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
Run Code Online (Sandbox Code Playgroud)
如果您有索引,Code, Activity或者Activity, Code无论如何您都不需要它,因为它始终可以使用带有简单搜索的计划