2017-10-01 16 views
1

oracle apexでユーザーパスワードを変更する方法が不思議です。 。現在、私はOracle apex 5.1 pl/sqlを使用してユーザーパスワードを変更する

if APEX_UTIL.GET_USERNAME(p_userid => :P5_ID) IS NOT NULL AND :P5_WACHTWOORD IS NOT NULL 
then 
    apex_util.edit_user(
     p_user_id => &P5_ID., 
     p_new_password => '&P5_WACHTWOORD.' 
    ); 
end if; 

ユーザーが存在し、リセットパスワードフィールドが記入されたときの処理で、このPL/SQLコードを使用しようとしている。しかし頂点は私に、このエラー与え続け:PLS-00306: wrong number or types of arguments in call to 'EDIT_USER'.

私が試しをこれに必要なパスワードをp_web_password paramに追加してください。私はまだ同じエラーがあります。

私はそれを完全に間違ってやっています。私はちょうどapexを使い始めましたが、私はデフォルトの認証を使用しようとしていますが、私は自分のデータベースに同じユーザーについてもっと多くのものを保存したいと思います。

userid私のデータベースは頂点としてuseridを生成するので、どのユーザーがログインしているかを把握することができます。これは正しい方法ですか、それとももっと良いオプションがありますか?

答えて

2

APIのドキュメントでは、p_user_nameも必須入力であることがわかります。

APEX_UTIL.EDIT_USER (
     p_user_id      IN     NUMBER, 
     p_user_name     IN     VARCHAR2, 
     p_first_name     IN     VARCHAR2 DEFAULT NULL, 
     p_last_name     IN     VARCHAR2 DEFAULT NULL, 
     p_web_password     IN     VARCHAR2 DEFAULT NULL, 
... 

http://docs.oracle.com/database/apex-5.1/AEAPI/EDIT_USER-Procedure.htm#AEAPI117

あなたが実際のパラメータ値のバインド変数を使用していない理由はありますか?

p_user_id => :P5_ID 
+0

ありがとう!私はデフォルト値に全く気付かなかった。私はP5_IDと&P5_IDの間で切り替えました。ユーザーを追加すると、最終的に最後のものと連携するようになり、もうそれを変更しないことに決めました。それは私が使っていない唯一の理由です:P5_ID – klokklok

+1

デフォルトでは、バインド変数を使用して、&P1_ITEMを残してください。 HTMLの構文は&P1_ITEM!HTMLで今でもエスケープすることができます。 SQLのバインド変数のみを使用するhttp://www.grassroots-oracle.com/2012/02/apex-variables-in-sql.html優れたセキュリティ/パフォーマンスの習慣IMHO – Scott

関連する問題