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在子句中的任何位置.. –
那么,如果函数返回多于一行,您将得到此错误,因为子查询返回多于一行。 –