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
)。
しかし、警告ボックスをポップアップすることができません。お知らせ下さい。
ありがとうございました。
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;
Pl/sqlプロシージャからのjavascriptコードを埋め込むには、「Before Header」ポイントにプロシージャを配置する必要があります。しかし、私はこれがあなたが達成しようとしていることに対する最良の解決策だとは思いません。
あなたがしようとしていることは、検証権を追加することですか?もしそうなら、なぜ頂点検証を使用しないのですか?次のようなオプションを使用して検証を作成します。
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;