Call javascript application process

I use 5 APEX. I have a page that I use a button to call js and dynamic action.

I created the button on my page with action "Defined by the dynamic Action" and static id "ajax".

I added this js on my page 'function and declaration of global variables ' section:

$('_#ajax').click (function () {}

var ajaxRequest = new htmldb_Get (null, & APP_ID., 'APPLICATION_PROCESS is getId', 0);

var ajaxResult = ajaxRequest.get ();

Alert (ajaxResult);

$.ajax({)

             url: " http://10.25.7.84/WS/selectionService/currentSelection/student ",

type: 'POST',

data type: 'json ',.

contentType: "application/json",

data: ' {'mode': 'set', 'ID': "[" + ajaxResult + "]","page": 1, "pageSize": 20 "}'

});

Alert (' we need to find a better message - value current selection complete ');

});

I have created a process called 'getid ':

DECLARE

p_app_id NUMBER: = 100;

p_page_id NUMBER: = 13;

BEGIN

...

END;

2 questions:

(1) I want this application process to be reusable for multiple pages/applications, so I need to replace the hard-coded "p_app_id", "p_page_id" with something I can put on each page. What is the best way to do it? Elements of the application? How and where should I set up on the page?

(2) in my js, I don't want to hard-code the IP address in the URL.  url: "http://10.25.7.84/ws/selectionservice/currentselection/student". "" Y at - it something that I can use so that it uses the IP that APEX was running on?

Hi bobmagan,

bobmagan wrote:

I tried, but it doesn't seem to work. The application process worked when I had coded the 2 variables. Don't know if its something in the code, that's why I've included pieces that use 'p_app_id' and 'p_page_id '.

You can access the app ID and the ID of the Page in javascript and send it to your AJAX process as follows:

  • JS code:
$('#ajax').click(function(){
    var ajaxRequest = new htmldb_Get(null,&APP_ID.,'APPLICATION_PROCESS=getId',0);
    ajaxRequest.addParam('x01',$x('pFlowId').value);
    ajaxRequest.addParam('x02',$x('pFlowStepId').value);
    var ajaxResult  = ajaxRequest.get();
    //alert(ajaxResult);
    $.ajax({
        url: "http://10.25.7.84/ws/selectionservice/currentselection/student",
        type: "POST",
        dataType: "json",
        contentType: "application/json",
        data: '{"mode":"set","ids":"[' + ajaxResult + ']","page":1,"pageSize":20}'
    });
    //alert('We need to find a better message - Set Current Selection Complete');
});
  • AJAX PL/SQL process:
DECLARE

    p_app_id   NUMBER := APEX_APPLICATION.G_X01;
    p_page_id  NUMBER := APEX_APPLICATION.G_X02;

BEGIN
  ...
END;

Kind regards

Kiran

Tags: Database

Similar Questions

  • Pass the parameter to the javascript application process

    I'm trying to pass a parameter to an application process from javascript and don't know how to do this. What I want to accomplish is to create checkboxes to delete several records at once. Before these records can be deleted, I need to make sure that the resource_type_id is not used. To do this, I call a javascript function with an onchange event that calls an application process to perform a database search. I have included the code to create the boxes and the JavaScript below. I am new to APEX, so there may be a way easier and better to do. Any help or suggestion about a better way to proceed would be appreciated.

    Thank you!

    Creation of boxes *.

    SELECT APEX_ITEM. CHECKBOX (20, RESOURCE_TYPE_ID, 'onchange = "CheckUsed (this.value)" '; ':') "Delete", RESOURCE_TYPE, APEX_ITEM.text(10,RESOURCE_TYPE_ID) RESOURCE_TYPE_ID
    OF resource_types
    ORDER BY RESOURCE_TYPE



    < script language = "JavaScript1.1" type = "text/javascript" >
    function CheckUsed (id)
    {

    get var = new htmldb_Get (null, $x('pFlowId').value, 'APPLICATION_PROCESS is ResourcesResourceTypeExists', 0);

    Alert (Get.get ());
    }

    NP, help!

    Andy

  • Application process JavaScript

    Hello

    I want to run a JavaScript application process to update a table.

    JavaScript:
    function update_seq() {}
    get var = new htmldb_Get (null,
    & APP_ID.,.
    'APPLICATION_PROCESS is update_rep_seq',
    (0);

    gReturn = get.get ();
    get = null;
    }

    At the request of PL/SQL
    BEGIN
    INSERT INTO jmv_temp VALUES (SYSDATE, "in_process");
    COMMIT;
    EXCEPTION WHEN OTHERS THEN
    HTP.p (' error: ' |) SQLERRM);
    END;

    If I run the process from a URL, it inserts my record.
    .../f?p=500:4:465882208613569:APPLICATION_PROCESS=update_rep_seq

    If I call the JavaScript from an element to the file didn't get inserted. Finally, I wish to pass parameters to do an update on a table.

    No idea why the JavaScript call does not work?

    Thank you

    Melvin

    Hello:

    Try if change the last parameter in the 'htmldb-get' call from 0 to 4 makes a difference

    CITY

  • The call for a process of application using JS by a button

    Hello

    I need to create a button that deletes the entire table All_References lines.

    I have created a new process of shared components "Delete_All_References" call, then set it to run on demand.

    PL/SQL block:

    Begin
    Delete from All_References;
    End;
    /

    In the HTML header of the page on which lies the button 'Remove all references' or P13_DeleteAllReferences, I entered in the following:

    < script language "JavaScript" type = "text/javascript" >
    function Delete_All_References()
    < /script >

    I have then entered the settings button, set the action to "defined by dinamic action", then added onchang = "javascript:Delete_All_References();" "in HTML table cell attributes.

    According to most of the tutorials when I click the button remove all the button of refereneces, my table should now get clear but it doesn't.

    Can you guys please help?

    Thank you and best regards,
    Diez

    The onchange event will work fine. Change the button back to a normal button instead of linking to a dynamic Action for now.

    The only other thing I see which can cause a problem is your call to the method itself.

    OnChange = "JavaScript:Delete_All_References();" »

    Need to replace...

    OnChange = "JavaScript:delete_all_references();" »

    The called javascript method is case-sensitive.

    Let me know if it suits it.

    Malay Keith
    www.blackhawkenterprise.com

  • Problem with htmldb_Get call using an application process

    Hello

    I wonder if it might be possible to get several values with the gReturn = get.get (); When the call of a query application on process.

    I need to put in place two elements of Application when the user selects a value in a list of selection.

    That's what I call the process

    var ID = document.getElementById('P50_STUDENT_ID').value;
    get var = new htmldb_Get (null, & APP_ID., 'APPLICATION_PROCESS is autoAssign', 0);
    Get.Add ('P50_STUDENT_ID', ID);
    gReturn = get.get ();
    -Development of application
    $x('P20_FIRST_NAME').value = gReturn;

    My application process looks like this:

    I do the whole concatenation because I do not know if it; s a way to send each value separately when you call the get function.
    v_Name varchar2 (200);

    Start
    Select student_first_name. » -'|| student_mi | » -'|| student_last_name | » -'|| student_user
    in v_name
    of stu_info
    where student_id =: P20_STUDENT_ID;

    HTP. PRN (v_Name);
    exception, then that other then htp.prn ("an error occurred while retrieving last_name ' |") SQLERRM);
    end;

    Watch Denes Kubicek Demo app:
    http://Apex.Oracle.com/pls/OTN/f?p=31517:106:2350758884850191:no

    It does exactly what you want.
    HTH
    Thomas

  • do called ondemand dynamic process

    Hi guys,.

    I write a js code to call and run several processes application ondemand level as below - any process on request can be passed when the js code is triggered by button

    #1.

    function updateEmp (p_proc, p_empno) {}

    var v_value = document.getElementById (p_empno) .value;

    var v_proc = 'APPLICATION_PROCESS =' + p_proc;

    asynchronous HTTP AJAX request using jQuery

    $.ajax({)

    type: 'POST',

    URL: "wwv_flow.show",

    data: {}

    p_flow_id: $('#pFlowId').val (),.

    p_flow_step_id: $('#pFlowStepId').val (),.

    p_instance: $('#pInstance').val (),.

    x 01: v_value,.

    p_request: ' "' + v_proc + '"' / /'"APPLICATION_PROCESS =" + p_proc + ' "' designate the application process"

    },

    beforeSend:

    function() {}

    do something

    },

    success: / / to be called if the request is successful

    function() {}

    do something here

    Alert (' test this value = "+ v_value);

    }

    });

    }

    #2. the call button (url redirect) is

    JavaScript:updateEmp('OnDemandx',_'P3_EMPLOYEEID');

    but when I hardcode the process name directly as below, it works.

    , p_request: ' "APPLICATION_PROCESS = OnDemandx"

    so, what could be the problem here?

    Apex 5.x

    Kind regards

    Gor_Mahia wrote:

    I write a js code to call and run several processes application ondemand level as below - any process on request can be passed when the js code is triggered by button

    What exactly is the point of this? The result of each process on request will probably be different, so as well as use the "dynamic" process, the function must also manage the value returned by the callback dynamically, which it does not currently appear to support.

    Always advanced postal code using the functionality of the syntax highlighted in the editor.


    function updateEmp(p_proc, p_empno) {
    
        var v_value = document.getElementById(p_empno).value;
        var v_proc =  'APPLICATION_PROCESS=' + p_proc;
    
      // perform an asynchronous HTTP AJAX request using jQuery
      $.ajax({
        type: "POST",
        url: "wwv_flow.show",
        data: {
          p_flow_id: $('#pFlowId').val(),
          p_flow_step_id: $('#pFlowStepId').val(),
          p_instance: $('#pInstance').val(),
          x01: v_value,
          p_request: '"' + v_proc + '"'  //'"APPLICATION_PROCESS=' + p_proc + '"'  refer to the application process
        },
        beforeSend:
          function() {
        // do something
          },
        success:  // to be called if the request succeeds
          function() {
          // do something here
            alert('tested this value = ' + v_value );
          }
      });
    }
    

    but when I hardcode the process name directly as below, it works.

    , p_request: ' "APPLICATION_PROCESS = OnDemandx"

    so, what could be the problem here?

    Line 15: v_proc a string value is not a literal and so should not be enclosed in quotes:

    function updateEmp(p_proc, p_empno) {
    
        var v_value = document.getElementById(p_empno).value;
        var v_proc =  'APPLICATION_PROCESS=' + p_proc;
    
      // perform an asynchronous HTTP AJAX request using jQuery
      $.ajax({
        type: "POST",
        url: "wwv_flow.show",
        data: {
          p_flow_id: $('#pFlowId').val(),
          p_flow_step_id: $('#pFlowStepId').val(),
          p_instance: $('#pInstance').val(),
          x01: v_value,
          p_request: v_proc
        },
        beforeSend:
          function() {
        // do something
          },
        success:  // to be called if the request succeeds
          function() {
          // do something here
            alert('tested this value = ' + v_value );
          }
      });
    }
    

    Using the apex.server.process API would be clearer and involve a lot less typing.

  • To access the settings of ajax in the application process

    Hello

    I have an ajax call, submitting a parameter called cBoxKey.

       var get = new
       htmldb_Get(null,$v('pFlowId').value,'APPLICATION_PROCESS=TrackRows',0);
       get.add('cBoxKey','NOTREQUIRED');
      get.get();
    
    

    In the application process I can access the parameter 'cBoxKey' like below;

    declare
        l_checkBoxKey  varchar2(4000);  
    begin
        --
        -- Get the value of the global which will be set in JavaScript
        --
        l_checkBoxKey := wwv_flow.g_cBoxKey;
    
    

    However, this does not seem to work because when I replace

    l_checkBoxKey := wwv_flow.g_cBoxKey;
    
    

    with

    l_checkBoxKey := 'NOTREQUIRED';
    
    

    The application process is called and produces results (through the ajax call).

    In my view, that the question is how access the "cBoxKey" parameter in the application process.

    Any ideas on what could be wrong.

    Thank you.

    Hello

    I check any specification of package APEX version wwv_flow, there is no variable of g_cBoxKey.

    If you have idea there?

    Change your JavaScript for

    var get = new
    htmldb_Get(null,$v('pFlowId').value,'APPLICATION_PROCESS=TrackRows',0);
    get.addParam('x01','NOTREQUIRED');
    get.get();
    

    And then access process on demand as

    l_checkBoxKey := APEX_APPLICATION.g_x01;
    

    Kind regards
    Jari

  • Sending page apex to the application process (JSON) values

    Hi all

    A page 5 apex has a value in a hidden item, P5_CLASS
    In the apex 5 page, I wrote a JavaScript to call for a process of application (PL/SQL) to retrieve the values of a table on Page 5.
    var ajaxRequest = new htmldb_Get (null, & APP_ID., 'APPLICATION_PROCESS is Get_Class_Data', 0);
    and I use the JSON object to display the rows in the table.
    -----------
    Problem
    -----------
    It works pretty well. But I need to send the value of the hidden element P5_CLASS to Get_Class_Data so that I can ask P5_CLASS-basedapplication process.

    Help, please.

    Shiva says:
    Thank you Paul,.

    So I can use

    var ajaxRequest = new htmldb_Get (null, & APP_ID, 'APPLICATION_PROCESS = GET_CLASS_DATA', 0);
    ajaxRequest.add ('F15_GLOBALVAR', $v ("#P5_CLASS")) to send the value to the application process?

    (F15_GLOBALVAR is an application-level element, I created in the shared components)

    And to use this application in my sql in GET_CLASS_DATA, I can use sql... where class =: F15_GLOBALVAR?

    Yes.

    (Please zip code wrapped in \

    ...\
    

    Tags to preserve the special characters and formatting.)

  • in IE progress bar problem with on call for application

    I have several on the enforcement of the application process that I have called from javascript. The application process call pl/sql procedures in turn. Some of the procedures can take up to 10 seconds to complete, and while they are running, the screen just to freeze so that the user does not know that they are actually running. So, I would add some kind of a progression or Hourglass bar or an indication that things are moving.

    So I found the instructions of Re: hourglass display when the Page is processing . This works fine in Firefox but not in Internet Explorer.

    My footer text:

    < Style > #AjaxLoading {padding: 5px; do-size: 18px; width: 200px; text-align: center; left: 50%; top: 20%; position: absolute; border: 2px solid #666; background-color: #FFF ;}}
    < / style >
    < div id = "AjaxLoading" style = "" display: none; ">..." Treatment...
    < img src = "" #IMAGE_PREFIX #processing3.gif "id ="wait"/ >"
    < / div >

    My javascript:

    function create_invoice (pMilestoneNumber) {}
    Okay var = ("are confirm you sure you want to charge this invoice?");
    get var = new htmldb_Get (null, $v ('pFlowId'), 'APPLICATION_PROCESS is P110_CREATE_INVOICE', $v ('pFlowStepId'));
    If (! OK)
    return;
    html_ShowElement ('AjaxLoading');
    get.addParam('x01',pMilestoneNumber);
    gReturn = get.get ();
    Alert (gReturn);
    get = null;
    doSubmit();
    }

    In Firefox, the progress bar is displayed immediately after the user clicks ok to the confirmation request. In Internet Explorer, it does not appear until the application process of return with the return message.

    Any help would be greatly appreciated.

    Hello

    OK, it wasn't - it is just because there was a bug in my process it seemed that it worked. Sorry end that.

    So I re-tested, and the same problem that you experience will occur if you use Chrome. I think the best way is to use the technique suggested in the original thread that you connected. I so like this:

    function AjaxTest(){
         if(confirm("Are you sure you want to bill this Invoice?")){
              html_ShowElement('AjaxLoading');
              var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=IE_TEST',$v('pFlowStepId'));
              gReturn = get.GetAsync(g_AsyncReturn);
         }
    }
    
    function g_AsyncReturn(){
         if(p.readyState == 4){
              alert(p.responseText);
         }else{
              return false;
         }
    }
    

    That seems to work for me.

    In addition, you will notice in the example page, it shows the AjaxLoading element when loan State == 1, but in my experience, it doesn't work well not with chrome, so who's right for which I left out of the call back and just show before the process begins.

    Van
    Trent

  • Call for a process of page by clicking a link

    I have a report of the Apex with several lines and a column of link in. I would like to be able to call a page process to work on the line with the clicked link... I also need a couple of settings somehow to the process page that he calls a procedure that requires the parameters to operate correctly.

    So-
    When I click on a link on a line... maybe a couple of hidden objects page get ready.
    The page is then submitted and my process calls the procedure by using the values of the elements defined above as its parameters.
    Control is subject to the original page.

    So, basically, I'm trying to allow a user to perform repetitive actions on each line.

    My thought was to use a URL in the link and perhaps Javascript... or I am barking the wrong tree and is there a better way rather than a link?

    Thoughts?
    See you soon
    Ken

    You have the right idea. JavaScript is the way to go. Assuming that the values that are passed are part of this line of data, you can build the call to process JavaScript.

    Create two hidden objects on your page, make sure that they are not protected.
    say P1_CITY and P1_STATE

    Say your city query included and the State, define a column in the report as a link of the URL target with the following url

    JavaScript:MyFunction('#City#',_'#State#');

    Then set a javascript function in the HTML header section page

    function myFunc (City, pState) {}
    $x_value ('P1_CITY', City);
    $x_value ('P1_STATE', pState);
    doSubmit ('RUNPROC');
    }

    Then a process on the page did you want and which is conditional on the APPLICATION = "RUNPROC."

  • The clarification of application process

    Hello

    I am faced with a simple application process in the apex 4.2 version

    I have a page - which has a javascript function:

    clearMessage (ITAC) function

    {

    get var = new htmldb_Get (null, & APP_ID., 'APPLICATION_PROCESS is assignment_update', & APP_PAGE_ID.);

    get.addParam = ("x 01', CITA);

    var output = get.get ();

    obj = jQuery.parseJSON (output);

    Apex. Submit({Request:'submit',showWait:true});)

    }

    With an application on request process:

    declare

    l_value varchar2 (200): = wwv_flow.g_x01;

    Start

    app_public.assignment_update (l_value,

    : APP_ID,.

    : APP_PAGE_ID,.

    (: APP_USER);

    end;

    The problem is when the procedure works - he goes l_value with a null value.

    Why pointers that will help a lot!

    Thank you very much

    JAS

    Hello

    Just for info. Do not use undocumented htmldb_Get JavaScript function.

    You must use apex.server.process.

    Kind regards

    Jari

  • 4.2 DOC BUG: all about the application process

    "There is an error in Oracle Application Express Application Builder User Guide version 4.2 §8.8.1 " "on the implementation of the application process":

    A process On Demand is a special type of procedure of demand that has a Point of On Demand process and executes when it is called from a process On demand page level or a browser AJAX call. On-demand processes are useful when you have logic of PL/SQL that you want to run different execution points on several pages.

    At the request of the process generally must be created on a page and not at the level of the application. On request, process created at the application level are created with an initial authorization scheme of must not be Public user. This prohibits the process invoked with users in authenticated sessions.

    As it is perfectly possible (and desirable) at the request of the application process to be invoked, [that] by authenticated users, this should probably read:

    A process On Demand is a special type of procedure of demand that has a Point of On Demand process and executes when it is called from a process On demand page level or a browser AJAX call. On-demand processes are useful when you have logic of PL/SQL that you want to run different execution points on several pages.

    At the request of the process generally must be created on a page and not at the level of the application. On request, process created at the application level are created with an initial authorization scheme of must not be Public user. This forbidden process be invoked from users not authenticated sessions.

    In addition, the second paragraph is a new addition to the documentation for APEX 4.2. What is the reasoning for not creating processes on request at the application level? I've used them for a few years as a way to provide reusable, application- wide (for example, the file downloads and the AJAX content) only items authenticated Apex sessions.

    Hello

    Thanks again. I added a note to the 5.0 docs.

    It is certainly very good create processes at the level of applications On Demand. However, if a process is tied to a single page, only, it is immediately obvious that the process belongs to the interface of this page. It's good from a maintenance point of view, because if you only use application-level processes, it may be more difficult to determine if the process is still in use and where it is called from.

    Kind regards

    Christian

  • adding additional drives in the application process

    Hi, how it is possible to add additional disks in the application process? Now, go in the settings of the virtual machine in vCenter client to add disks after the virtual machine has been created in LCM. We take for the applicant specify how many additional disks and what size (just not RDM VMDK)

    Thank you

    It can get quite complicated because this is certainly not the standard features of LCM and would not be supported by VMware if this customization is not performed by the team of the Orchestration Services of our Professional Services organization... However, that being said, a general approach would be as follows:

    • Duplicate the workflow application for Virtual Machine to the category of workflow custom under user and give a custom name like ask VM

    • Add new entries to the custom workflow that are something like: additionalDiskCount (number) and additionalDiskSize (number) (which implies that all the additional disks would be the same size)

    • Update the workflow to store these values by using a standard LCM Action such as:

    System.getModule("com.vmware.lcm").addDataToTokenKeyAsString (provisioningToken, additionalDiskCount, "additionalDiskCount");

    System.getModule("com.vmware.lcm").addDataToTokenKeyAsString (provisioningToken, additionalDiskSize, "additionalDiskSize");

    The two lines above will store the specified user to other values that the token of data in the database of LCM and you will be able to get it back later because it is related to this particular request token.

    • Hide the initial request button of the tab requests and create a new button that points to your custom workflow

    • Create a new workflow that takes an object of lcm:ProvisioningToken as an entry called "token".

    • Inside of this workflow (let's call it 'Add disks to ask'), you will need to retrieve the additionalDiskCount and additionalDiskSize values that have been stored with the token:

    additionalDiskCount = System.getModule("com.vmware.lcm").getDataFromTokenKeyAsString (token, "additionalDiskCount");

    additionalDiskSize = System.getModule("com.vmware.lcm").getDataFromTokenKeyAsString (token, "additionalDiskSize");

    • You then get the object of VMware3:VirtualMachine of your token:

    VM = System.getModule("com.vmware.lcm.vim3").getVmFromToken (token);

    • Then, using those extracted values and the virtual computer object, use a loop to pass these parameters and some other default values you want in the workflow 'Add drive' (it's in the category library/VIM 3/Virtual Machine management/Device Management workflow.)

    • Once you have confirmed that this new workflow 'Add disks to ask' is working properly by passing only an object token with these entries of additional data stored with them, you can add this workflow for the reminder 'onCreate '.

    The above process is a general approach that could be taken. The specifics of real workflows that you create are up to you and the support of this customization

    Good luck!

    Visit me on http://www.vcoteam.info for vCenter Orchestrator tips and tutorials

  • Show/hide a Div so that the application process will be executed

    Hi all

    I have the following problem:
    I'm on APEX 3 and I have the page with 2 elements. When the user, enter the value in the first element on the page and navigate out of the element, in the second article should be the SYSDATE.
    This must be done as:
    1. set the fovus in the Item1.
    2. navigate off the Item1 (with TAB or the mouse).
    3 JavaScript function will be executed:
    3.1 icon "Please wait...". "will be displayed.
    3.2 application of getDbDate process will be executed.
    3.3 the value returned by the getDbDate of application process is allowed in the Field2.
    3.4 icon "Please wait...". "disappears.

    Here ist the sample application: http://apex.oracle.com/pls/otn/f?p=MISCELLANEOUS:108

    In Firefox, I have no problems to show the "Please wait...". "Icon, but the Explorer Intener shows me nothing. But the application process will be executed.

    Any ideas?

    Best regards

    Hello

    See the example of CARL
    http://HTMLDB.Oracle.com/pls/OTN/f?p=11933:62

    Kind regards
    Jari
    -----
    My Blog: http://dbswh.webhop.net/dbswh/f?p=BLOG:HOME:0
    Twitter: http://www.twitter.com/jariolai

  • Application process, do not run after the validation error

    Hi all.

    APEX 4.1
    XE 11 GR 2
    WIN7
    Firexfox

    I have a page where I add additional javascript code to a page by using htp.p in a process of application "before the footer. It works fine as long as there is no validation error. When the validation fails (for example a UK-check with the location of the error value "Inline notification"), the page is re-fondue, but the application process is not running and so my extra code is missing from the page.

    Is this intended behavior or am I doing something wrond?

    Andreas

    Addition:

    I tried the sam using a 'local' page process, but these do not seem to fire.

    Published by: Andreas Weiden on 22.12.2011 21:31

    Andreas Weiden says:

    Is this intended behavior or am I doing something wrond?

    This is the expected behavior. Generally, the process and calculations source item, the actions are not executed when the page is re-made after validation errors. They also provide great potential for confusion of side effects (for example reset to a default value for an item that had an invalid value sent).

    However, the engine provides a special treatment for the process with the built-in Inline Validation errors displayed condition so that they will be run when a page is rendered with validation errors. See + {: identifier of the thread = 493070} + for an interesting discussion on this topic.

    An alternative (and in my opinion a more classic and rather more clear) would be to generate the JS in a dynamic region of PL/SQL code on the Page zero. Always reuse the code on all or several pages, but is more clearly part of the rendering of the page as an application process and does not rely on a very obscure condition, being the only way you can make it work.

Maybe you are looking for