sql >> Databasteknik >  >> RDS >> Oracle

Anropa en Oracle-funktion via Ajax för validering på plats i Oracle APEX v4.2.2

Ajax + apex 4.2 =apex.server. process api
Det kräver att du har en process vid beställningsprocesspunkten på sidan eller en ansökningsprocess. I den måste du anropa din funktion och ange parametrarna, som kan vara sidobjekten. För att ge en retur, skriv värden till http-bufferten med anrop till htp.p .

DECLARE
  some_var1 VARCHAR2(50);
BEGIN
  some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
  -- write values back
  htp.p(some_var1);
END;

Du kan enkelt tillhandahålla apex.server.process med sidobjekt. Ytterligare hantering är allt i javascript.
Varning:datatypen är som standard inställd på JSON, och om du inte anger någon annan standarddatatyp och inte returnerar en json-sträng kommer du att få ett analysfel. Så om du returnerar en text inom din on-demand-process, såsom INVALID, se till att ställa in datatypen på text!

apex.server.process ( "MY_PROCESS", {
  pageItems: "#P1_DEPTNO,#P1_EMPNO"
  }, {
    dataType: "text"
  , success: function( pData ) { 
      //pData should contain VALID or INVALID - alert it
      alert(pData);
      if ( pData === 'INVALID' ) {
        // do something here when the result is invalid
        // maybe you want to color something red for example
        alert('The data you have entered is invalid');
      };
    }
  } );

Jag skulle inte dela upp det här i mer dynamiska handlingar än nödvändigt, även om det kanske är möjligt. Jag personligen är inte förtjust i att försöka använda en PLSQL block dynamisk sann action, bara för att det är mer obskyrt att agera på om du vill hantera returvärden.
Sätt bara din knapp så att den inte skickar sidan, utan action definieras av dynamisk handling. Sedan i den dynamiska handlingen skapa en sann handling av typen exekvera javascript, och använd ajax-anropet med callback(s) där.




  1. Subtrahera två frågor från samma tabell

  2. Fall När Distinkt värde då summera ett annat värde?

  3. Hur man tar bort blanktecken från en sträng i SQL Server

  4. ORA-00936:orakel för uttryck som saknas