2016-10-22 85 views
0

Oracle Application Express 5のアプリケーションで現在作業中です。具体的には、カスタム認証スキームを作成しようとしています。認証 - PLS-00488: 'VALIDATE_USER_FROM_DB'はタイプである必要があります。ORA-06550

SQLコマンドウィンドウで、アプリケーションに基本レベルの認証を提供する関数を作成することから始めました。私は自分の個人的な学生の参照番号(srn)と生年月日(dob)でサインインすることができるようにしたい、この情報はテーブル "学生"から取得されます。

create or replace function validate_user_from_db 
(p_username in number, p_password in date) 
return boolean 
as v_pw_check varchar2(1); 
begin select 'x' into v_pw_check 
from student 
where upper(srn) = upper(p_username) 
and dob = p_password; apex_util.set_authentication_result(0); 
return true; exception when no_data_found then apex_util.set_authentication_result(4); 
return false; 
end validate_user_from_db; 

この関数はエラーなしでコンパイルされているので、関数をテストする簡単なクエリを作成しました。

declare 
vresult varchar2(10); 
begin 
if validate_user_from_db ('30134852', '08/17/1997') then 
DBMS_OUTPUT.PUT_LINE('Welcome Back'); 
else 
DBMS_OUTPUT.PUT_LINE('Error'); 
end if; 
end; 

クエリが成功し、正しい資格情報が入力されたときに「ようこそ」が出力されました。これですべてがうまくいっていたので、私は新しい認証方式を作ろうと考えていました。私はそれを "User Validation"と命名し、スキームタイプをcustomに設定しました。

私はチュートリアルを以下と認証スキームに調査し、それは、PL/SQLコードで、私はラインを配置することを示唆し

return validate_user_from_db; 

が、私は保存し、それをコンパイルしたとき、私はこのエラーを得たしてきた

メッセージ。私は、PL/SQLコードウィンドウに次の関数を書くことにしたと、それは問題なくコンパイルされ、この問題を試み、解決しようとする試みで

Error Code

が、私は、アプリケーションを実行し、正しいログイン資格情報を使用しようとすると、 「無効なログイン資格情報」と表示されたエラーメッセージが表示されます。

function validate_user_from_db 
(p_username in number, p_password in date) 
return boolean 
as v_pw_check varchar2(1); 
begin select 'x' into v_pw_check 
from student 
where upper(srn) = upper(p_username) 
and dob = p_password; apex_util.set_authentication_result(0); 
return true; exception when no_data_found then apex_util.set_authentication_result(4); 
return false; 
end validate_user_from_db; 

Oracle Apexを使用して認証を作成しているので、何か助けてください。

+0

'return validate_user_from_db;' - あなたの関数への引数がありません。また、暗黙の文字列 - >日付変換に頼るべきではありません。アメリカのNLS設定を使用しない限り、 '08/17/1997'を日付入力値として指定すると失敗します。明示的な日付書式でto_char()を使用するか、日付をISO形式で受け入れる 'date'演算子を使用してください。 'date '2016-08-17'' –

答えて

0

テストアプリケーションを使用して問題を解決しました。ログインページは、設定した認証方式に応じて自動的に生成されます。認証を変更するときは、既存のログインページを必ず削除してください。

関連する問題