sql >> Databasteknik >  >> RDS >> Oracle

hur fungerar oracles lagrade procedurer (med markörer)?

Den lagrade proceduren returnerar något, det är bara att du inte gör något med resultaten.

Du kan göra detta helt enkelt genom att köra följande skript i SQLDeveloper:


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

En annan metod är att hämta varje rad och göra någon form av bearbetning:


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. MySQL regexp på index

  2. Visa en bild lagrad i MySql-databasen i BLOB-format med c#

  3. PHP-infogning med array-värden, tabellnamn

  4. Välja data från mySQL med ID i URL