我在sql中有此过程。要求是:如果条件(例如,我放1 = 1 ..),则[运行另一个将从表中随机抽取一个值并将其返回的过程或函数。]否则1例如:
case when 1=1 then (dbo.myFunc @input) else 1
这是myTable:'1','2','3'我希望此函数从中随机取一个值
CREATE FUNCTION dbo.myFunc (@input int)
RETURNS int
AS BEGIN
declare @rndValue int
set @rndValue = (SELECT top 1 * FROM myTable ORDER BY newID())
RETURN @rndValue
END
问题是,在函数中我无法运行newID(),并且如果我想使用过程而不是函数,则无法从case语句中运行它。
您的建议是什么?非常感谢。
我认为您需要这样的代码:
set x = case when 1=1 then (select top(1) val from myTable order by newid()) else 1 end;