2014-11-30 2 views
1

Я создал функцию, которая должна быть длиной не менее 8 символов.ошибка проверки пароля ошибка ora - 06503

CREATE OR REPLACE FUNCTION password_function (
    username  VARCHAR2, 
    password  VARCHAR2, 
    old_password VARCHAR2) 
    RETURN BOOLEAN AS 
BEGIN 
    IF LENGTH(password) < 8 THEN 
    RETURN FALSE; 
    ELSE 
    RETURN TRUE; 
    END IF; 
END password_function; 
/

чем я изменить профиль user1 как

«изменить профиль user1 предел password_verify_function password_function»

тогда, когда я пытался создать пользователя с профилем user1 и 9 символов пароля Я получаю следующее сообщение об ошибке ,

SQL> создать пользовательский тест, идентифицированный профилем Passowrd1 user1; создавать пользовательские испытания идентифицированной Passowrd1 * ОШИБКА в строке 1:

ORA-28003: проверка пароля для указанного пароля не удалось

ORA-06503: PL/SQL: функция возвращается без значения

не могли бы вы рассказать мне, есть ли какие-либо проблемы в моей функции? и как его решить?

+0

Параметр 'ОРА-28003: 'похоже, что все в порядке, что произойдет, если вы введете правильный пароль? – Sebas

+2

«ORA-06503: PL/SQL: функция, возвращенная без значения» говорит, что ваша функция не возвращает никакого значения (в некоторых случаях может быть). Вы уверены, что указали точно такой же код, который использовался при создании пользователя? – Multisync

ответ

0

Кажется, у вас проблемы с кодом, который вы нам не показываете.

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

Проверьте, есть ли возврат после вашего звонка по номеру alter profile ....

Другое дело:

IF LENGTH(password) < 8 THEN 
    RETURN FALSE; 
ELSE 
    RETURN TRUE; 
END IF; 

Этот код возвращает истину, если новый пароль является недействительным!

ДЛИНА (нуль) = NULL

Лучше бы:

NVL (ДЛИНА (нуль), 0)