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

PL/SQL:конвертиране на явен курсор в референтен курсор?

Както споменах в моя коментар, отварянето на sys_refcursor за друг курсор не е разрешено до Oracle 11g. Тъй като се опитвате да направите нещо, което изисква използването на sys_refcursor, веднъж начинът може да бъде като по-долу:

Създайте тип

CREATE TYPE va IS TABLE OF NUMBER;
/

Блокиране:

DECLARE
   CURSOR c
   IS
      SELECT employee_id FROM employee;

   rc    SYS_REFCURSOR;
   var   va;
BEGIN
   OPEN c;

   FETCH c BULK COLLECT INTO var;

   CLOSE c;

   OPEN rc FOR SELECT COLUMN_VALUE FROM TABLE (var);
END;
/

Тук ще видите, че в края отново използвам SELECT израз за ref_cursor . Това е точно както ако не искате да използвате обичайния начин, аз използвах алтернативен начин.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получа това времево клеймо във формата, който искам, Oracle SQL

  2. Reader.Read() не успява да прочете редове, въпреки че има редове

  3. данни за последните 4 тримесечия

  4. Как да направите sqoop за импортиране на данни от oracle clob в avro файлове на hdfs

  5. Как мога да създам копие на таблица на Oracle, без да копирам данните?