У меня есть функция скалярного значения, которая принимает целое число как один из его входных данных. Мне нужен запрос, который запускает эту функцию для набора целых чисел (1,2,3,4,5)
. Это то, что я сделал до сих пор:Выберите последовательные числа в виде строк, которые будут использоваться в качестве входных данных для определенной пользователем функции
SELECT dbo.MyFunction('2016-05-13', Number)
FROM (SELECT TOP 5 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Number FROM SomeTable) AS T
И это работает. Есть ли способ сделать это без FROM SomeTable
, так как я фактически не использую никакой информации, содержащейся в таблице?
В качестве альтернативы, существует ли более чистый способ написать весь запрос?
Следует отметить, что ваш текущий запрос не определен, в том случае, если 'SomeTable' содержит более 5 строк, существует * no * гарантия того, что вы действительно получите 5 строк с номерами 1-5 , –
Возможно, переосмысление этого процесса было бы лучшим подходом. Вместо использования скалярной функции (которая ужасно неэффективна) вы можете переосмыслить ее как функцию встроенной таблицы, которая использует таблицу таблиц. Это было бы быстрее и гибче, чем повторять скалярную функцию снова и снова. Если вы можете поделиться содержимым своей функции, я собираюсь собрать что-то вместе, чтобы продемонстрировать. –
Производительность @SeanLange на самом деле не проблема, мне просто нужно вытащить эти значения в таблицу один раз в день. Спасибо, в любом случае. – Dan