2013-05-09 2 views
0

Я получаю ошибку ORA-06503, которая является «Функция возвращена без значения». Я хотел знать, возникает ли эта ошибка, когда функция запроса внутри функции находит значение NULL, и функция пытается вернуть полученное значение NULL? Вот функция очертание -Функция PL/SQL, возвращающая значение

FUNCTION getEmailAddress (user IN VARCHAR2) RETURN VARCHAR2 IS 
v_email    xxxxTable.email%TYPE; 
BEGIN 
SELECT email 
INTO v_email 
FROM xxxxTable 
WHERE user_id = user; 
RETURN v_email; 
EXCEPTION 
WHEN OTHERS 
THEN 
    RETURN constantValue; 
END getEmailAddress; 

Любое пояснение здесь было бы полезно

Благодаря

+1

Что это за константа? В любом случае, похоже, вы пытаетесь уловить ошибку «без строк» ​​- сделайте это специально с «Exception When NO_DATA_FOUND ...». Повторно запустите его и посмотрите, есть ли у вас какие-либо другие ошибки. –

+0

constantValue является адресом электронной почты по умолчанию. – ravi

+3

Это еще не полный код, не так ли? –

ответ

3

Возвращение нуль все еще рассчитывает как вернуть значение. Однако выбор строк не вызывает ошибки. Возможно, вы улавливаете его с помощью предложения ИСКЛЮЧЕНИЕ КОГДА ДРУГИХ, что является плохой привычкой.

2

Это означает, что ваша функция ничего не возвращает - не null, но есть какая-то ветка, которая выходит без вызова return.

Вероятный виновник - это блок , который ловит что-то - вполне возможно when others - а затем не поднимает и не делает себя return. A return между begin и exception будет пропущен, если исключение действительно было поднято.

Спекуляция, конечно; показывая функциональный код в вопросе, прояснит проблему.

+0

добавлен код – ravi

1

В соответствии с this «Вы пытались вызвать функцию PLSQL, но функция была отсутствовала инструкция RETURN."

Предлагаемое решение:
«Попробуйте перезаписать эту функцию, чтобы включить оператор RETURN. Или если вы не хотите возвращать значение, перезапишите свою функцию как процедуру».

Эта ошибка не поднята, потому что возвращаемое значение было NULL.

Проводка некоторых из ваших кодов поможет нам определить точную проблему более легко (вместо того, чтобы лучше понять это).