【问题标题】:What is the purpose of the orcacle cursor(select ..) query in Oracle?Oracle 中的 oracle cursor(select ..) 查询的目的是什么?
【发布时间】:2014-01-30 15:07:53
【问题描述】:

我试图了解使用 cursor(select..) 查询的目的。 例如,我从 oracle 文档中得到了这个。我可以将员工加入部门表。光标是怎么回事?

SELECT department_name, CURSOR(SELECT salary, commission_pct 
   FROM employees e
   WHERE e.department_id = d.department_id)
   FROM departments d
   ORDER BY department_name;

【问题讨论】:

  • 此查询获取部门名称,以及该部门所有员工的工资和通讯百分比的游标引用。加入为您提供部门表中的多行,匹配相应的员工人数。还有一个有趣的讨论here
  • 我们必须在有限的集合中获取查询。如果大批量制作,我们会最大化可能打开的游标。当以 50 个为一组打开时,在 fetch 之后打开和关闭 50 个游标。!与普通查询的主要区别是,我们不能在普通查询(标量)中返回多个列/行,这可以通过 CURSOR 表达式来实现!

标签: oracle plsql


【解决方案1】:

CURSOR 表达式是一个很少使用的功能,它使您能够将数据集传递给 PL/SQL 过程。

这允许高级功能,例如链接并行流水线功能。这提供了一种快速处理多个阶段的过程代码的方法。有关示例,请参见 PL/SQL Language Reference

这是一个有趣的功能,但使用 CURSOR 表达式通常是一个巨大的错误。这意味着您的大部分处理将在 PL/SQL 而不是 SQL 中完成。 PL/SQL 非常适合控制 SQL,但它通常不是您想要完成繁重工作的地方。

我只看到使用 CURSOR 表达式有两个原因:

  1. 开发人员不知道中级或高级 SQL 功能,例如分析函数、模型等。
  2. 构建企业规则引擎。

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2011-11-12
    • 2021-11-10
    • 2011-12-20
    • 2015-08-06
    相关资源
    最近更新 更多