我的问题是我想合并两个SP。产生的sp的骨架是:
with Paging(RowNo, ID, Name, Description, LengthSeconds, Rating, Url, ThumbnailFileName, AddedAt) AS
(
(if(@SortType is null)
begin
... select ...
end
else
begin
... select...
end
)
select * from Paging ...
如果在with语句中,我可以这样做吗?
答案 0 :(得分:8)
不,,,它会像
with Paging(RowNo, ID, Name, Description, LengthSeconds, Rating, Url, ThumbnailFileName, AddedAt) AS
(
select ...
WHERE @SortType is not null
UNION ALL
select ...
WHERE @SortType is null
)...
如果查询很简单,那么您就不需要CTE:它不会添加任何可读性
答案 1 :(得分:1)
您可以使用union
,其中上边对应if
的前半部分:
select ...
where @SortType is null
union all
select ...
where @SortType not null null
查询中不允许使用if
语句,只能控制查询流。因此,if
内的with
是不允许的。