sql - 这是如何工作的pl/sql?
问题描述
请解释这是如何工作的,Thx。
DECLARE
CURSOR ab IS
SELECT emp.ename, emp.sal, dept.loc
FROM emp
JOIN dept ON emp.deptno = dept.deptno;
TYPE tbl_join IS TABLE OF cc%ROWTYPE;
l_table tbl_join;
BEGIN
OPEN cc;
FETCH cc BULK COLLECT INTO l_table;
CLOSE cc;
FOR indx IN
1 .. l_table.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE(l_table(indx).ename);
DBMS_OUTPUT.PUT_LINE(l_table(indx).sal);
DBMS_OUTPUT.PUT_LINE(l_table(indx).loc);
END LOOP;
END;
解决方案
将员工姓名、薪水和位置详细信息提取到 CURSOR ab 中。
对于游标中的每一行,循环打印详细信息。
循环在达到总行数时终止。
对于游标,请参阅此处
PL/SQL 游标用于检索和处理零或多行数据。使用游标有很多步骤,根据您实现游标的方式,您可以控制每个步骤或让数据库执行它们。PL/SQL 游标基于 SELECT 语句,通常在 PL/SQL 块的声明部分中声明。该语句不受检索的列或联接的表数的限制。
此代码段使用批量收集,请参见此处。
获取数据的一种方法是 Oracle 批量收集。使用 Oracle 批量收集,PL/SQL 引擎告诉 SQL 引擎一次收集许多行并将它们放在一个集合中。在 Oracle 批量收集期间,SQL 引擎检索所有行并将它们加载到集合中并切换回 PL/SQL 引擎。当使用 Oracle 批量收集检索行时,仅使用两个上下文切换来检索它们。您希望使用 Oracle 批量收集收集的行数越多,使用 Oracle 批量收集的性能提升就越大。
推荐阅读
- javascript - 无法使用 Javascript 成功提交表单
- hyperledger-fabric - Hyperledger Fabric - 如果互联网不可用,合约实例化失败
- android - 接收方应用程序 - 处理意图过滤器 URI 的权限
- php - 如何根据提交的数据重定向到特定的 URL?
- python-3.x - 模块在没有明确指令的情况下重新加载和重置
- python - Python Jupyter Notebook 中不显示内联图
- github - 使用 GraphQL 突变删除 github 中的分支
- reactjs - 基于对象更新重新渲染组件
- html - 如何防止文本超出网格(居中)?
- azure - 在 Azure 门户中禁用 SMBv3