对于下面代码的最后两个语句,生成实际的执行计划。您可以看到启动谓词 on@Par1被放置在不同的位置,这完全改变了来自test_fn1函数的实际行数。我需要控制这种行为。
create or alter function dbo.test_fn1(@Par1 varchar(100), @Par2 varchar(1))
returns @t table(item varchar(100))
as
begin
insert into @t (item) select value from STRING_SPLIT(@Par1, @Par2);
return
end
GO
create or alter function dbo.test_fn(@Par1 varchar(100), @Par2 varchar(100))
returns table
as
return (
select s.*
from dbo.test_fn1(@Par2,';') x
inner join sys.objects s on s.name = x.item
where @Par1 = 'CASE1'
)
GO
create or alter function dbo.test_fnx(@Par1 varchar(100), @Par2
varchar(100))
returns table
as
return (
select s.*
from …Run Code Online (Sandbox Code Playgroud)