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

jak fungují uložené procedury Oracle (s kurzory)?

Uložená procedura něco vrací, jen vy s výsledky nic neděláte.

Můžete to udělat jednoduše spuštěním následujícího skriptu v SQLDeveloper:


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

Další metodou je načíst každý řádek a provést nějaké zpracování:


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. Vytvořte tabulku v SQL Server 2017

  2. Jednoduchý skript Ajax Jquery – Jak mohu získat informace pro každý z řádků v tabulce?

  3. Jak nastavit proměnnou prostředí Path pomocí C#

  4. neočekávaný úspěch dotazu