2017-08-16 7 views
0

似たような問題は既に説明されており、ここでは動的アクションを使用して解決しましたが、私の場合はまだ実装できません。APEX - ページ上の項目の値に基づいてストアプロシージャの基本を呼び出す方法

リモートデータベースのパスワードを変更するためのフォーム(自動作成されていますが、ページ作成者)があります。 P15_UNAME(リストを選択)LOV

  • 新しいパスワード:P15_NEW(パスワード)
  • 実行するためのボタン:(ボタン)SUBMIT 3つの項目

    • ログインがあります。

    ボタン火災の簡単なストアドプロシージャ:ログイン名とパスワードの

    declare 
        success int; 
        msg varchar(100); 
    begin 
        [email protected](
        PUSERNAME => :P15_UNAME, 
        PNEWPASSWORD => :P15_NEW, 
        PRESULT => success, 
        PMESSAGE => msg); 
    if success = 0 then 
        apex_application.g_print_success_message := msg; 
    else 
        apex_application.g_print_success_message := '<span style="color:red">' || msg || '</span>'; 
    end if ; 
    end ; 
    

    残念ながら選びだし/入力された値は、ストアード・プロシージャーによって呼び出されていません。私はおそらく動的アクションを使用する必要がありますが、どのようにストアプロシージャと動的を同時に呼び出すか分からない。私はいくつかのヒントをお願いします。

    K.

  • +1

    ユーザー名がアイテムP15_COMBOVALUEにある場合は、そのアイテムがない場合はnullを返すP15_UNAMEではなく、プロシージャ呼び出しでユーザー名を使用する必要があります。動的アクションは必要ありません。 –

    +0

    あなたは正しいです - もちろん間違いです。ログインがある項目はP15_UNAMEを呼び出します。 – user3863616

    +0

    IS P15_UNAMEがユーザー名を表示し、IDを返しますか? (あなたが提出するときにセッションの値は何ですか?) – RLOG

    答えて

    0

    ページアイテムの値を直接データベースに渡そうとしていますか?プロシージャ/プロシージャの呼び出しは、このようになります。

    -- database 
    PROCEDURE p_change_details(p_uname varchar2, p_password varchar2) 
    IS 
        success int; 
        msg varchar(100); 
    begin 
        [email protected](
        PUSERNAME => p_uname, 
        PNEWPASSWORD => p_password, 
        PRESULT => success, 
        PMESSAGE => msg); 
    if success = 0 then 
        apex_application.g_print_success_message := msg; 
    else 
        apex_application.g_print_success_message := '<span style="color:red">' || msg || '</span>'; 
    end if ; 
    end ; 
    
    --APEX 
    p_change_details(:P15_UNAME, :P15_NEW) 
    
    +0

    これはたぶん適切な方法です。とにかく結果は同じです。 – user3863616

    0

    ダイナミック・アクションを作成して、ボタン・クリック時にPL/SQLコードを実行できます。

    がこのがお手伝いしますLink

    希望を例 - 参照してください。質問があれば教えてください。

    関連する問題