sql >> Database teknologi >  >> RDS >> Oracle

Hvordan indsætter man resultatsæt returneret af en oracle-lagret procedure i en anden tabel ved hjælp af anden lagret procedure?

Du ville bruge REF CURSOR som en almindelig eksplicit markør :

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. SQL Server Parallel Backup Gendannelse -1

  2. Indsæt tidsstempel med JdbcTemplate i Oracle-database (ORA-01858)

  3. sun.security.validator.ValidatorException:PKIX-stibygning mislykkedes, med java>1.6

  4. MySQL INNER JOIN vælg kun én række fra den anden tabel