У меня быстрый вопрос о значениях по умолчанию в функциях PL / SQL в Oracle. Возьмите эту программу в качестве примера;
create or replace
FUNCTION testFunction
(
varNumber IN NUMBER DEFAULT 0
)
RETURN NUMBER
AS
BEGIN
dbms_output.put_line(varNumber);
RETURN varNumber;
END;
Идея заключается в том, что если при вызове этой функции для varNumber не указано значение, оно будет принимать значение 0.
Теперь моя проблема в том, что мои функции вызываются из слоя веб-сервисов, который всегда будет передавать значение NULL в качестве значения для параметров, для которых он не имеет значения. Oracle интерпретирует NULL как значение и поэтому не инициализирует varNumber значением по умолчанию, равным 0.
Я могу понять, почему такой подход имеет смысл, но мне было интересно, есть ли способ переопределить это поведение и сделать так, чтобы при передаче значения NULL он заставлял Oracle назначать явное значение DEFAULT, которое указано в заголовке функции?
Я рассмотрел вариант выполнения ручной проверки ...
IF(varNumber IS NULL) THEN
varNumber := 0;
END IF;
Однако существуют сотни функций, в которых это может быть проблемой, не говоря уже о большом количестве параметров для каждой функции, и поэтому я бы предпочел, чтобы я мог найти более общее решение проблемы.
Приветствует любое понимание, которое вы можете дать.