0
我有一個名爲「GetRelatedUsersIds」的表值用戶定義函數,它返回任何特定用戶的所有子用戶(包括自身) 。在Sql Server中使用帶表值用戶定義函數的Where In子句
而且我有一種情況,我想在條款如下給出使用該功能: -
Create procedure [ABC]
(
@AddedBy Int,
@LoggedUser int=0
)
as
SELECT * FROM MyTable
where AddedBy in (case when @AddedBy =0 then (select UserId from dbo.GetRelatedUsersIds(@LoggedUser)) else @AddedBy end)
我在這裏尋找變量@AddedBy如果0,那麼我會去變量@ LoggedUser。
CREATE function [dbo].[GetRelatedUsersIds]
(
@ccManagerId INT
)
returns @tableUsersId table(UserId int)
AS
.... code
但隨着UDF返回一個表,所以我得到一個錯誤「子查詢返回多個值」。
如何解決這個問題,TIA。
這不是案例表達式的工作方式。它旨在返回一個單一的值,而不是像你在這裏試圖做的那樣控制邏輯。 –
我知道,但我可以使用此udf在子句中的任何位置.. –
那麼,如果函數返回多於一行,您將得到此錯誤,因爲子查詢返回多於一行。 –