Oracle
 sql >> база данни >  >> RDS >> Oracle

как работят съхранените процедури на Oracle (с курсори)?

Съхранената процедура връща нещо, просто вие не правите нищо с резултатите.

Можете да направите това просто като стартирате следния скрипт в SQLDeveloper:


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

Друг метод е да извлечете всеки ред и да извършите някаква обработка:


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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка java.sql.SQLException:ORA-00911:невалиден знак

  2. ВЪНШЕН КЛЮЧ ПРИ ОГРАНИЧЕНИЕ НА ИЗТРИВАНЕ Грешка - Oracle

  3. Как да намеря общия брой използвани дни в месеца?

  4. Каква е създадената дата-час за реда на таблицата в Oracle?

  5. Получаване на грешка ORA - 00907 за следното при АКТУАЛИЗИРАНЕ