Запустите некоторое время l oop на фиксированное время в SQL - PullRequest
1 голос
/ 30 апреля 2020

Вопрос может вызвать недоумение, так как я представляю, что это неправильное использование SQL, но у меня есть функция, которая выполняет симуляцию Монте-Карло для оптимизации некоторых параметров, выполнение которых занимает очень много времени, хотелось бы чтобы иметь возможность запустить его в выходные и затем вывести все, что у него есть, когда это будет сделано.

В настоящее время я настроил его как

DECLARE INT @iterations = 1000
WHILE @COUNT < @iterations 
BEGIN
   DoStuff()
   @COUNT = @COUNT +1
END

Возможно ли спроектировать что-то подобное в Т SQL?

DECLARE INT @maxtime= 72hours
[start counting time]
WHILE @COUNT < @maxtime 
BEGIN
   DoStuff()
END

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Вы имеете в виду, как это?

DECLARE INT @maxtime= 72, DATETIME @endtime;

SET @endtime = DATEADD(HOUR, 72, CURRENT_TIMESTAMP);

WHILE @endtime >= CURRENT_TIMESTAMP
BEGIN
   -- DoStuff()
END;

К вашему сведению: current_timestamp является эквивалентом ANSI getdate().

0 голосов
/ 30 апреля 2020

Вы можете попытаться запланировать его как работу

"Запланировать работу" - Sql Сервер

...