С самого начала я думаю, что использование ключевого слова DEFAULT
поможет, не так ли? (Следующая ссылка даст некоторые дополнительные сведения.)
Использование ключевого слова ПО УМОЛЧАНИЮ .
CREATE OR REPLACE FUNCTION get_records (
i_code IN records.code%type DEFAULT NULL,
i_type IN records.type%type DEFAULT NULL
) RETURN results
РЕДАКТИРОВАТЬ # 1
Если я правильно понял вопрос, вы хотите вернуть все записи, когда параметр i_type
равен NULL. В отсутствие дальнейших подробностей мое предположение было бы следующим.
CREATE OR REPLACE FUNCTION get_records (
i_code IN records.code%TYPE DEFAULT NULL,
i_type IN records.type%TYPE DEFAULT NULL
) RETURN results
BEGIN
IF (i_type IS NULL) THEN
select *
from table
ELSE
select *
from table
where type = NVL(i_type, type)
END IF
EXCEPTION
WHEN OTHERS THEN
NULL
END
Это все, что я могу сделать с предоставленной информацией, хотя текст функции приведен ниже.
РЕДАКТИРОВАТЬ # 2
Я немного заржавел от Oracle, поэтому я ознакомился с некоторыми документами, как показано ниже:
Oracle/PLSQL: NVL Function
Как я уже читал, вам лучше использовать функцию NVL
в вашей инструкции SELECT
, а не в предложении WHERE
.
В конце концов, какой именно у вас вопрос? Не могли бы вы сделать это кристально чистым?