sql - 设置参数后存储过程中的 WITH RECOMPILE
问题描述
我想WITH RECOMPILE
在声明的参数填充值后在存储过程中使用。我必须把它放在哪里?我想做这样的事情:
CREATE PROCEDURE sp_dosomething
@AdrID INT = '32'
WITH RECOMPILE
AS
SELECT @AdrID = SELECT MAX(ID)
FROM Address
INSERT INTO TempStreet
SELECT Streetname FROM Workadress WHERE ID = @AdrID
INSERT INTO TempStreet
SELECT Streetname FROM Homeadress WHERE ID = @AdrID
OPTION(RECOMPILE)
UPDATE TempStreet Set
FROM TempStreet inner join AditionalData1...
UPDATE TempStreet Set
FROM TempStreet inner join AditionalData2...
SELECT * FROM TempStreet
GO
所以我想设置参数,然后每次执行时重新编译存储过程的其余部分的执行计划。
存储过程执行以下操作:
过程执行两个不同的 INSERT INTO a Table。之后,该表将通过多个语句与其他表上的连接进行更新。最后,该表上有一个 SELECT 。
什么是正确的方法?使用WITH RECOMPILE还是使用OPTION(RECOMPILE)
会更好吗
请帮我。
解决方案
这应该有效:
CREATE PROCEDURE sp_dosomething_sub @AdrID INT
WITH RECOMPILE
AS
Select Streetname from Workadress where ID = @AdrID
Select Streetname from Homeadress where ID = @AdrID
GO
CREATE PROCEDURE sp_dosomething @AdrID INT = '32'
AS
select @AdrID = Select max(ID) FROM Address
EXEC sp_dosomething_sub @ArdID
GO
请注意,我并不是说这一定是一个好主意,我只是说它应该做你想做的事。这需要一些非常奇怪(或复杂)的情况才能成为一种理想的方法。
推荐阅读
- php - 如何仅查询重复事件的第一个实例
- javascript - 使用java脚本反应js日期格式
- android - Android CameraX YuvToRgbConverter 人工制品
- python - 通过电子邮件发送保存在数据库中的表单数据(Flask、pymysql、)
- python-3.x - 使用reportlab python库以Bangla语言生成PDF损坏的联合字母问题
- python - 如何将用户重定向到容器 webapp 但显示不同的地址
- python - 解析 json 给出 JSONDecodeError: Unterminated string
- python - 如何在 Python 中获取对象的所有和唯一属性?
- c# - C#在后台填充列表
- html - 尝试解析 xhr 响应文本时出错(位置 0 处的 JSON 中的意外标记 <)