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

Oracle 11g - jak vrátit záznam z funkce se spojením tabulky

Možná vám chybí ještě další typ založený na MYTYPE .

Zde je příklad (používám Scottovo schéma, protože nemám vaše tabulky). Přidal jsem DEPTNO do MYTYPE abych byl schopen spojit výsledek (vrácený funkcí) s EMP tabulka.

Tohle máte:

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

Type created.

To je to, co vám chybí:

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

Type created.

Funkce:poznámka řádek 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.

Testování:

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. Jak napsat parametrizovaný SQL dotaz v javascriptu?

  2. Nelze nainstalovat plpython pro postgres 12

  3. Jak spočítat celkový počet řádků na výstupu opakovače ACF

  4. Vytvořte databázi při spuštění docker-compose