在这个问题中,我们需要解决SQL Server中基于参数的内联表值函数执行计划变化的问题。为了解决这个问题,我们可以采取以下方法:
SELECT * FROM dbo.MyInlineFunction(@param) OPTION (RECOMPILE);
-- 启用强制参数化
EXEC sp_executesql N'SELECT * FROM dbo.MyInlineFunction(@param)', N'@param INT', @param = @param;
CREATE FUNCTION dbo.MyInlineFunction (@param1 INT, @param2 INT)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM dbo.MyTable WHERE col1 = @param1 AND col2 = @param2
);
CREATE FUNCTION dbo.MyInlineFunction (@param INT)
RETURNS @Results TABLE
(
col1 INT,
col2 VARCHAR(50)
)
AS
BEGIN
INSERT INTO @Results
SELECT col1, col2 FROM dbo.MyTable WHERE col1 = @param;
RETURN;
END;
总之,解决SQL Server中基于参数的内联表值函数执行计划变化的问题需要采取多种方法。这些方法可以帮助确保查询的性能和可靠性,同时也可以减少维护和调试的难度。
领取专属 10元无门槛券
手把手带您无忧上云