Как я могу установить параметр процедуры оракула по умолчанию для результата выбора? - PullRequest
2 голосов
/ 13 октября 2011

У меня есть процедура оракула, и я хочу установить параметр по умолчанию для результата оператора select, такого как ниже.

procedure foo( startID number : = max(x.id) from xtable x )

, но приведенный выше код является недопустимым синтаксисом.

1 Ответ

8 голосов
/ 13 октября 2011

Вы можете использовать другое недопустимое значение для этого значения, например NULL:

PROCEDURE foo (p_id NUMBER DEFAULT NULL) IS
   l_startID NUMBER := p_id;
BEGIN
   IF p_id IS NULL THEN
      SELECT max(id) INTO l_startID FROM xtable;
   END IF;
   ...
END;

Если ваша функция / процедура находится в пакете, вы также можете перегрузить it:

PROCEDURE foo (p_id NUMBER)
[...]

PROCEDURE foo IS
   l_startID NUMBER;
BEGIN
   SELECT max(id) INTO l_startID FROM xtable;
   foo(l_startID);
END;
...