sql >> Database >  >> RDS >> Oracle

hoe werken in orakel opgeslagen procedures (met cursors)?

De opgeslagen procedure retourneert iets, u doet alleen niets met de resultaten.

U kunt dit eenvoudig doen door het volgende script in SQLDeveloper uit te voeren:


VARIABLE csr REFCURSOR;
EXEC getRejectedReasons(:csr); -- the colon identifies the parameter as a variable
PRINT csr;

Een andere methode is om elke rij op te halen en een soort verwerking uit te voeren:


DECLARE
  -- sys_refcursor is weakly typed
  refcsr  SYS_REFCURSOR;
  -- define a record so we can reference the fields
  rej_rec Reasons_for_Rejection%ROWTYPE;
BEGIN

  getRejectedReasons(refcsr);

   -- loop through the results  
   LOOP
      -- gets one row at a time
      FETCH refcsr INTO rej_rec;
      -- if the fetch doesn't find any more rows exit the loop
      EXIT WHEN refcsr%NOTFOUND;
      -- Do something here.  
      -- For example : DBMS_OUTPUT.PUT_LINE(rej_rec.reason_desc);
    END LOOP;

END;


  1. Errcode 13, SELECT INTO OUTFILE probleem

  2. Hoe een string in SQL Server vóór 2017 inkorten?

  3. Hoe kan ik een volledige lijst krijgen van alle query's die momenteel op mijn MySQL-server worden uitgevoerd?

  4. loop door multidimensionale array in php en voer mysql in (voorraadgegevens)