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

Hvad svarer til SQL Server APPLY i Oracle?

Jeg tror, ​​hvad der svarer til APPLY-klausulen i Oracle, kaldes en lateral JOIN. En lateral joinforbindelse i Oracle er, når du forbinder en tabel A med en funktion F, der udsender rækker, og denne funktion har kolonner med A som parametre.

Lad os bygge et lille eksempel med denne opsætning:

SQL> OPRET ELLER ERSTAT TYPE emp_row AS OBJECT ( 2 empno NUMBER(4), 3 ename VARCHAR(10), 4 job VARCHAR(9), 5 deptno NUMBER(2) 6 ); 7 /Type createdSQL> OPRET ELLER ERSTAT TYPE emp_tab SOM TABEL OVER emp_row; 2 /Skriv oprettetSQL> OPRET ELLER ERSTAT FUNKTION get_emp_dept(p_deptnr. NUMMER) RETURN emp_tab IS 2 l_result emp_tab; 3 BEGIN 4 VÆLG emp_row(empno, ename, job, deptnr) 5 BULK COLLECT INTO l_result 6 FROM emp 7 WHERE deptnr =p_deptnr; 8 RETURN l_resultat; 9 END get_emp_dept; 10 /Funktion oprettet 

En lateral joinforbindelse er automatisk i Oracle, der er ikke noget særligt søgeord:

SQL> VÆLG dept.dname, emp.empno, emp.ename, emp.job 2 FRA afd 3 CROSS JOIN TABLE(get_emp_dept(dept.deptnr)) emp;DNAME EMPNO ENAME JOB----- ---------- ----- ---------- ----------REGNSKAB 7782 CLARK MANAGER REGNSKAB 7839 KING PRESIDENT REGNSKAB 7934 MILLER CLERKRESEARCH 7369 SMITH CLERKRESEARCH 7566 JONES MANAGERRESEARCH 7788 SCOTT ANALYSTRESEARCH 7876 ADAMS CLERKRESEARCH 7902 FORD ANALYSTSALG 7499 ALLEN SALGSMANDSALG 7521 WARD SALGSMANDSALG 7654 MARTIN SALGSMANDSALG 7698 BLAKE MANAGERSALG 784SALG 784SALG TURNER SALGS1900 række

  1. Ret "FEJL 1222 (21000):De brugte SELECT-sætninger har et andet antal kolonner", når du bruger UNION i MySQL

  2. Hvordan omdøber man den uploadede fil, før man gemmer den i en mappe?

  3. Tilpas Spotlight Cloud Alarmer

  4. PLSQL JDBC:Hvordan får man sidste række-id?