oracle适用于,Oracle中适用于SQL Server的相当于什么?

本文介绍了Oracle数据库中APPLY子句的概念,它等效于横向JOIN。通过一个示例展示了如何使用函数get_emp_dept根据部门编号获取员工信息,并在查询中实现了部门与员工的交叉连接,展示出每个部门的所有员工详细信息。
摘要由CSDN通过智能技术生成

我认为相当于Oracle中的APPLY子句称为横向JOIN。 Oracle中的横向连接是当您使用输出行的函数F加入表A时,此函数具有列A作为参数。

让我们用这个设置来构建一个小例子:

SQL> CREATE OR REPLACE TYPE emp_row AS OBJECT (

2 empno NUMBER(4),

3 ename VARCHAR(10),

4 job VARCHAR(9),

5 deptno NUMBER(2)

6 );

7 /

Type created

SQL> CREATE OR REPLACE TYPE emp_tab AS TABLE OF emp_row;

2 /

Type created

SQL> CREATE OR REPLACE FUNCTION get_emp_dept(p_deptno NUMBER) RETURN emp_tab IS

2 l_result emp_tab;

3 BEGIN

4 SELECT emp_row(empno, ename, job, deptno)

5 BULK COLLECT INTO l_result

6 FROM emp

7 WHERE deptno = p_deptno;

8 RETURN l_result;

9 END get_emp_dept;

10 /

Function created

在Oracle中,侧向连接是自动的,没有特殊的关键字:

SQL> SELECT dept.dname, emp.empno, emp.ename, emp.job

2 FROM dept

3 CROSS JOIN TABLE(get_emp_dept(dept.deptno)) emp;

DNAME EMPNO ENAME JOB

-------------- ----- ---------- ---------

ACCOUNTING 7782 CLARK MANAGER

ACCOUNTING 7839 KING PRESIDENT

ACCOUNTING 7934 MILLER CLERK

RESEARCH 7369 SMITH CLERK

RESEARCH 7566 JONES MANAGER

RESEARCH 7788 SCOTT ANALYST

RESEARCH 7876 ADAMS CLERK

RESEARCH 7902 FORD ANALYST

SALES 7499 ALLEN SALESMAN

SALES 7521 WARD SALESMAN

SALES 7654 MARTIN SALESMAN

SALES 7698 BLAKE MANAGER

SALES 7844 TURNER SALESMAN

SALES 7900 JAMES CLERK

14 rows selected

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值