web-dev-qa-db-ja.com

Oracle Apex:PL / SQLブロックのJavascriptコード

PL/SQLブロックにJavaScriptコードを含めることは可能ですか? Oracle Apexページプロセスの送信時にJavaScriptコードを含むpl/sqlブロックを実行したい。

DECLARE
  v_count   NUMBER;

  BEGIN
        select count(*) into v_count
        from summary
        where prd_items = 'Total';

 HTP.p ('<script type="text/javascript">');
 HTP.p (   'alert(''The value of Total for BU is ' ||v_count|| '.\n'
      || 'You have to enter correct values to proceed further \n'');');
 HTP.p ('</script>');
END; 

ページ領域にSubmitボタンがあり、このpl/sqlブロックはページ処理アイテムであり、ページsubmit(Conditional:Submit)。

しかし、警告ボックスをポップアップすることができません。お知らせ下さい。

ありがとうございました。

10
ApexDev

PL/SQLブロックにJavaScriptコードを含めることは可能ですか?

  • はい

ただし、JavaScript関数AFTER SUBMITを渡して実行しようとしていることは機能しません。実行ポイントをAFTER HEADERに変更した場合にのみ機能します。

または、入力した値を検証するだけで、apex検証を使用しない場合は、APEX_ERRORパッケージを使用できます。これを試してください。

DECLARE
  v_count   NUMBER;

  BEGIN
        select prd_items into v_count
        from summary
        where prd_items = 'Total';
        -- I dont really know what you want to 
        --accomplish with this query but Im pretty sure 
        --It will not return a number
        -- if you want to count the number of prd_items it should be like this
        --select COUNT(*) 
        --into v_count
        --from summary
        --where prd_items = 'Total';


    APEX_ERROR.ADD_ERROR(
      p_message            => 'The value of Total for BU is '||v_count||'.<br>'||
                              'You have to enter correct values to proceed further',
      p_display_location   => apex_error.c_inline_in_notification 
    );  

END; 

編集:カウントが100と等しくない場合にエラーを表示したい場合は、次のようにします:

DECLARE
  v_count   NUMBER;

  BEGIN

     Select COUNT(*) 
     into v_count
     from summary
     where prd_items = 'Total';

  IF v_count != 100 THEN
    APEX_ERROR.ADD_ERROR(
      p_message            => 'The value of Total for BU is '||v_count||'.<br>'||
                              'You have to enter correct values to proceed further',
      p_display_location   => apex_error.c_inline_in_notification 
    );  


 END IF;
END; 
3
brenners1302

Pl/sqlプロシージャからのjavascriptコードを埋め込むには、「Before Header」ポイントにプロシージャを配置する必要があります。しかし、私はこれがあなたが達成しようとしていることに対する最良の解決策だとは思いません。

あなたがしようとしていることは、検証権を追加することですか?もしそうなら、なぜ頂点検証を使用しないのですか?次のようなオプションを使用して検証を作成します。

  1. 検証レベルの特定:ページアイテム
  2. 検証するページアイテムを特定します。必要なアイテムを選択します。
  3. 検証タイプを選択:PL/SQL
  4. 作成する検証のタイプを選択してください:エラーテキストを返す関数
  5. 検証コード:
    DECLARE  v_count          NUMBER;
  V_validation_msg VARCHAR2(500);
BEGIN
  SELECT prd_items INTO v_count FROM summary WHERE prd_items = 'Total';
  V_validation_msg:='The value of Total for BU is ' ||v_count|| '.\n' || 'You have to enter correct values to proceed further';
  IF 1= 1 THEN --add some condition here if you want
    RETURN V_validation_msg;
  ELSE
    RETURN NULL;
  END IF;
END;
  1. ボタンが押されたとき:送信ボタン。
1
Cristian_I