Неограниченное количество аргументов для пользовательских функций SQL?

В Oracle и MySQL, как я могу создать функцию, которая принимает неопределенное количество параметров, чтобы ее можно было вызывать как GREATEST (значение1, значение2, ...)?

Сравнивать два значения по определенному стандарту довольно просто, но передача «большего» значения в еще одно сравнение - это то, чего мне, кажется, не удается в SQL.

Спасибо!

Изменить (после комментария Майка ниже): Я ищу решение для сравнения нескольких столбцов. Конкретно, мой вопрос в том, как реализовать GREATEST () как UDF. В следующем коде сравниваются три столбца.

SELECT CASE WHEN CASE WHEN col_1 < col_2 THEN col_2
                 ELSE col_1 END < col_3 THEN col_3
       ELSE CASE WHEN col_1 < col_2 THEN col_2
                 ELSE col_1 END END AS greatest
  FROM figures;

По-видимому, это не так хорошо масштабируется. Было бы гораздо полезнее иметь общую функцию, которая многократно применяет один и тот же метод сравнения к списку значений.

Под SQL я подразумеваю любой продукт базы данных SQL, но я предпочитаю решение, которое работает в Oracle или MySQL

6
задан Chris Townsend 18 November 2011 в 19:15
поделиться