sql >> Databáze >  >> RDS >> Oracle

Volání funkce Oracle přes Ajax pro účely ověření na místě v Oracle APEX v4.2.2

Ajax + apex 4.2 =apex.server. proces api
Vyžaduje to, abyste měli na stránce proces na vyžádání nebo proces aplikace. V něm musíte zavolat svou funkci a zadat parametry, kterými mohou být položky stránky. Chcete-li poskytnout návrat, zapište hodnoty do vyrovnávací paměti http pomocí volání 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;

Můžete snadno poskytnout apex.server.process s položkami stránky. Další zpracování je vše v javascriptu.
Upozornění:DataType je standardně nastaven na JSON, a pokud tedy nezadáte žádný jiný výchozí datový typ a nevrátíte řetězec json, zobrazí se chyba analýzy. Pokud tedy v rámci procesu na vyžádání vrátíte text, například NEPLATNÝ, nezapomeňte nastavit datový typ na 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');
      };
    }
  } );

Nerozděloval bych to na dynamičtější akce, než je nutné, i když by to možná šlo. Osobně nemám rád pokusy o použití PLSQL bloku dynamickou skutečnou akci, jen proto, že je nejasnější jednat, pokud chcete řešit návratové hodnoty.
Stačí nastavit tlačítko tak, aby neodesílalo stránku, ale akci definovaný dynamickým působením. Poté v dynamické akci vytvořte jednu skutečnou akci typu spusťte javascript a použijte tam volání ajax se zpětným voláním.




  1. Konverze Oracle varchar2 na nvarchar2

  2. Vytvořte spojovací dotaz na loopback.io

  3. Vyvolejte funkci z DLL (c#) v Oracle Forms

  4. Kontrola duplicit mezi DATABASE a DATATABLE