oracleフォームのエラー・メッセージを生成するdbトリガーを作成中に問題が発生しました。私を助けてもらえますか?トリガーの実行中に余分なメッセージを取得する
私のコードは次のとおりです。
CREATE OR REPLACE TRIGGER unsuccessful_attempts_lock
BEFORE UPDATE of last_logon_date
ON temp_user
FOR EACH ROW
DECLARE
CURSOR c_unsuccessful_attempts IS
SELECT *
FROM temp_unsuccessful_attempts
WHERE user_id=:NEW.user_id;
max_fails EXCEPTION;
BEGIN
FOR r_unsuccessful_attempts IN c_unsuccessful_attempts
LOOP
IF(r_unsuccessful_attempts.locked ='Y') THEN
RAISE max_fails;
END IF;
END LOOP;
EXCEPTION
WHEN max_fails THEN
FND_MESSAGE.SET_NAME ('FND', 'FLEX-USER DEFINED ERROR');
FND_MESSAGE.SET_TOKEN ('MSG', 'You have reached maximum failed logins.
This account has been locked temporarily. Please contact
your system administrator')
FND_MESSAGE.RAISE_ERROR;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20400,'An error has occured.Please contact
your system administrator'||SQLCODE||SQLERRM);
END unsuccessful_attempts_lock;
ユーザーのアカウントがロックされると、temp_unsuccessful_attempts.locked
は「Y」に更新されますと/ SE彼はさらに、ログインできないようにする必要があり。 temp_user
は、ユーザーがログインに成功したときに更新されるテーブルです。
ユーザーのアカウントがロックされた後(temp_unsuccessful_attempts.locked='Y'
)、正しいパスワードでログインしようとすると、tisのトリガーが起動して(temp_user
の更新時に)、フォームでエラーが発生するロックされており、さらに進むべきではありません。私は取得しています
メッセージは次のとおりです。
ORACLE error -20001: ORA-20001: FLEX-USER DEFINED ERROR:N, MSG, You have reached maximum failed logins. Please contact your system administrator.
ORA-06512: at "APPS.FND_MESSAGE",line 66
ORA-06512: at "APPS.UNSUCCESSFUL_ATTEMPTS_LOCKS",line 38
ORA-04088: error during excution of trigger 'APPS.UNSUCCESSFUL_ATTEMPTS_LOCKS' has been detected in FND_SIGNON.NEW_SESSION.
私のトリガーは私のオラクルのアプリ画面上でいくつかの余分なメッセージを与えています。 FND_SIGNON.NEW_SESSION
はtemp_user.last_logon_dateが更新取得された手順である:私はちょうど
You have reached maximum failed logins.Your account is locked temporarily.Please contact your helpdesk.
P.Sを表示したいです。
ありがとうございました。しかし、それは私にエラーを与えていると言って残念ながら、関数自体のコンパイル:TRIGGER UNSUCCESSFUL_ATTEMPTS_LOCKため エラー: LINE/COLのERROR -------- ---------- -------------------------------------------------- ----- 21/5 PLS-00201:識別子 'MESSAGE'を宣言する必要があります 21/5 PL/SQL:文は無視されます この機能はデータベース・トリガーでは機能しません。助けてください。 P.S:データベースにこのトリガーを作成して、アプリケーションでエラーメッセージを表示しています。私はアプリケーションコードを変更していません。 – prashant1988
@ prashant1988 "メッセージ"を含むサンプルは、この機能を持つフォームの内部で使用することです。これをpl/sqlで使用する場合は、strip_first_errorだけを呼び出します。 –
私は同じことを改めました。それでも私は1つのエラーが発生しています。 TRIGGER UNSUCCESSFUL_ATTEMPTS_LOCKのエラー: ライン/コールドエラー -------- ----------------------------- ------------------------------------- 21/5 PLS-00221: 'STRIP_FIRST_ERROR'はありません。プロシージャまたは定義されていません 21/5 PL/SQL:ステートメントが無視されました しかし、私はすでに関数を作成してコミットしました。 ------------------------- 関数が作成されました。 esp0002-SQL>コミット。 コミットが完了しました。 ------------------- お知らせください。 – prashant1988