apex グローバル変数のスコープはAPEX_APPLICATION.G_X01...G_X10
? それらは本当に「グローバル」、セッションスコープまたはリクエストスコープですか?
いくつかのテストを行ったところ、これらのグローバル変数はリクエストスコープであることが判明しました(つまり、同じセッションの他のリクエストと異なるセッションの他のリクエストは、グローバル変数の独自のコピーを取得します)が、確認したいと思います私の調査結果は正しいです。
セットアップの詳細:
クライアント側の JS コードは次のようになります。
data = {'first_name':$('#P25_FIRST_NAME').val()};
data = JSON.stringify(data);
$.ajax({
type: "POST",
url: "wwv_flow.show",
data: {
p_flow_id:$('#pFlowId').val(),
p_flow_step_id:$('#pFlowStepId').val(),
p_instance:$('#pInstance').val(),
x01:data,
p_request:"APPLICATION_PROCESS=AJAX_TEST"
},
dataType: "json",
success: function(data) {
alert('success:\n' + data);
},
error: function(data) {
alert('error:\n' + data);
},
});
サーバー側の PL/SQL コードは次のようになります。
CREATE OR REPLACE PROCEDURE
AJAX_TEST IS
JSON_REQUEST JSON;
JSON_RESPONSE JSON;
BEGIN
JSON_REQUEST := JSON(APEX_APPLICATION.G_X01);
JSON_RESPONSE := JSON();
JSON_RESPONSE.PUT('first_name', JSON_REQUEST.GET('first_name').GET_STRING());
JSON_RESPONSE.PUT('last_name', 'smith');
HTP.P(JSON_RESPONSE.to_char());
END AJAX_TEST;
現在のリクエストの処理範囲内で、変数APEX_APPLICATION.G_X01
、などが他のリクエストの影響を受けないようにしたいと考えています。X02
どうもありがとう!