sql >> Database >  >> RDS >> Oracle

Oracle 11g - hoe record uit functie terug te keren met table join

Nou, misschien mis je nog een ander type, gebaseerd op MYTYPE .

Hier is een voorbeeld (ik gebruik het schema van Scott omdat ik jouw tabellen niet heb). Ik heb DEPTNO toegevoegd in MYTYPE zodat ik het resultaat (geretourneerd door de functie) kan samenvoegen met de EMP tafel.

Dit is wat je hebt:

SQL> create or replace type mytype as object
  2    (deptno number,
  3     dname  varchar2(20),
  4     loc    varchar2(20));
  5  /

Type created.

Dit is wat je mist:

SQL> create or replace type mytab as table of mytype;
  2  /

Type created.

Een functie:opmerking regel 9:

SQL> create or replace function myfunc (p_in number) return mytab is
  2    v_dname varchar2(20);
  3    v_loc   varchar2(20);
  4  begin
  5    select dname, loc
  6      into v_dname, v_loc
  7      from dept
  8      where deptno = p_in;
  9    return mytab(mytype(p_in, v_dname, v_loc));
 10  end myfunc;
 11  /

Function created.

Testen:

SQL> select * from table(myfunc(10));

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
        10 ACCOUNTING           NEW YORK

SQL>
SQL> select e.ename, e.sal, m.dname, m.loc
  2  from emp e join table(myfunc(e.deptno)) m on m.deptno = e.deptno
  3  where e.deptno = 10
  4  order by m.dname, e.ename;

ENAME             SAL DNAME                LOC
---------- ---------- -------------------- --------------------
CLARK            2450 ACCOUNTING           NEW YORK
KING            10000 ACCOUNTING           NEW YORK
MILLER           1300 ACCOUNTING           NEW YORK

SQL>


  1. Hoe Ruby on Rails met mysql te installeren en het werkend te krijgen, een stapsgewijze handleiding?

  2. Hoe de schemanaam en tabelnaam als invoer door te geven en vervolgens de geheugengrootte en het aantal rijen als uitvoer in plsql te krijgen

  3. Hoe kan ik een asynchrone database in JavaFX doen?

  4. Haal de records van de laatste week op per dag