получение одной случайной строки из таблицы внутри сервера функций - sql - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть эта процедура в 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.

что вы предлагаете.? Большое спасибо.

1 Ответ

0 голосов
/ 05 февраля 2020

Я думаю, вам нужен такой код:

set x = case when 1=1 then (select top(1) val from myTable order by newid()) else 1 end;

SQL Fiddle

...