Forum Stats

  • 3,767,862 Users
  • 2,252,726 Discussions
  • 7,874,367 Comments

Discussions

¿Cómo enviar y recibir un arreglo a PL/SQL por medio de JavaScript Promises en Oracle Apex?

Moisés
Moisés Member Posts: 2 Green Ribbon
edited Feb 18, 2021 7:08PM in Español Discusiones

Actualmente estoy intentando enviar un arreglo de valores de un Gestor de Listas por medio de Ajax, para después recibirlo en PL y obtener cada valor en un for para hacer uso de cada valor. Pero mi pregunta es como puedo recibir ese arreglo en PL y saber si en realidad estoy enviando bien el arreglo. Gracias por adelantado.

Hasta el momento intento enviar el arreglo así por medio de js.

    
            var giro = document.getElementById('P28_NEW').value;
            var selectedIds = [];

            $('select#P28_NEW').find('option').each(function() {
                selectedIds.push($(this).val());
            });

            insert();

            function insert(){
                apex.server.process(
                    "AJAX_SEND_ARRAY",{
                        x01: JSON.stringify(selectedIds) 
                    },{
                        dataType:"text",
                        loadingIndicator:"#P28_NEW",
                        success:function(pData){

                        }
                    }
                );
            }

Eh utilizado algo como esto pero no se como aplicarlo con el arreglo que mando:

DECLARE
        l_return varchar2(200);
        expediente varchar(200);
    BEGIN
    
    for i in 1..apex_application.g_x01.count loop
        expediente := apex_application.g_x01(i);
    end loop;
           
    EXCEPTION WHEN no_data_found THEN
        ROLLBACK;
        htp.prn('Error');
    END;


Best Answer

  • Moisés
    Moisés Member Posts: 2 Green Ribbon
    Accepted Answer

      Bien lo eh solucionado y les comparto la solución por si alguien necesita algo parecido.

    var giro = document.getElementById('P28_NEW').value;
    var selectedIds = [];
    
    $('select#P28_NEW').find('option').each(function() {
        selectedIds.push($(this).val());
    });
    
    insert();
    
    function insert(){
        apex.server.process(
            "AJAX_SEND_ARRAY",{
                f10: selectedIds
            },{
                dataType:"text",
                loadingIndicator:"#P28_NEW",
                success:function(pData){
                  alert(pData);//Akerta solo para validar que los valores se obtienen
                }
            }
        );
    }
    

    Código PL/SQL

      DECLARE
            l_return varchar2(200);
            expediente varchar(200);
        BEGIN
        
         //Obtener valores del arreglo
        for i in 1..apex_application.g_f10.count loop
         //Concatenar valores del arreglo solo para prueba de retorno
            expediente := expediente || ' ' || apex_application.g_f10(i);
         //Aquí podre hacer mis operaciones.
        end loop;
        
        l_return := 'Exp: ' || expediente;
        htp.prn(l_return);
            
        EXCEPTION WHEN no_data_found THEN
            ROLLBACK;
            htp.prn('Error');
        END;
    

Answers

  • Moisés
    Moisés Member Posts: 2 Green Ribbon
    Accepted Answer

      Bien lo eh solucionado y les comparto la solución por si alguien necesita algo parecido.

    var giro = document.getElementById('P28_NEW').value;
    var selectedIds = [];
    
    $('select#P28_NEW').find('option').each(function() {
        selectedIds.push($(this).val());
    });
    
    insert();
    
    function insert(){
        apex.server.process(
            "AJAX_SEND_ARRAY",{
                f10: selectedIds
            },{
                dataType:"text",
                loadingIndicator:"#P28_NEW",
                success:function(pData){
                  alert(pData);//Akerta solo para validar que los valores se obtienen
                }
            }
        );
    }
    

    Código PL/SQL

      DECLARE
            l_return varchar2(200);
            expediente varchar(200);
        BEGIN
        
         //Obtener valores del arreglo
        for i in 1..apex_application.g_f10.count loop
         //Concatenar valores del arreglo solo para prueba de retorno
            expediente := expediente || ' ' || apex_application.g_f10(i);
         //Aquí podre hacer mis operaciones.
        end loop;
        
        l_return := 'Exp: ' || expediente;
        htp.prn(l_return);
            
        EXCEPTION WHEN no_data_found THEN
            ROLLBACK;
            htp.prn('Error');
        END;