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

Как да вмъкна набор от резултати, върнат от съхранена процедура на oracle, в друга таблица с помощта на втора съхранена процедура?

Ще използвате РЕФ КУРСОРА като обикновен явен курсор :

SQL> CREATE TABLE employee AS
  2  SELECT rownum id, 'XXX' name
  3    FROM DUAL CONNECT BY level <= 10;
Table created.

SQL> CREATE OR REPLACE PROCEDURE find_employees (
  2    emp_id NUMBER,
  3    employee_cursor OUT SYS_REFCURSOR
  4  ) IS
  5  BEGIN
  6      open employee_cursor for
  7      select * from employee WHERE id = emp_id;
  8  END;
  9  /

Procedure created.

SQL> CREATE OR REPLACE PROCEDURE do_something IS
  2     cc sys_refcursor;
  3     l employee%rowtype;
  4  BEGIN
  5     find_employees(1, cc);
  6     LOOP
  7        FETCH cc INTO l;
  8        EXIT WHEN cc%NOTFOUND;
  9        dbms_output.put_line(l.id||'-'||l.name);
 10     END LOOP;
 11  END;
 12  /
Procedure created.

SQL> EXEC do_something;
1-XXX


  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 автоматично създава VARCHAR инкрементиран PK

  2. Изтичане на памет с OracleCommand

  3. Доставчикът на Oracle Entity Framework не съхранява DateTime.Now с милисекунди

  4. създаване на материализиран изглед за годишен отчет въз основа на бавна функция

  5. Защо не мога да принудя Oracle 11g да консумира повече процесори за една SQL заявка