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

Jak vložit sadu výsledků vrácenou uloženou procedurou Oracle do jiné tabulky pomocí druhé uložené procedury?

Použili byste REF CURSOR jako běžný explicitní kurzor :

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. Vložení výchozí hodnoty jako aktuální datum + 30 dní v MySQL

  2. První volné číslo MySQL mezi existujícími hodnotami

  3. Lepší správa paměti (haldy) na Solaris 10

  4. CREATE TABLE MySQL vs T-SQL s příklady syntaxe