问题标签 [bulk-collect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3688 浏览

oracle - 如何在 PLSQL 中存储立即执行的结果?

我有一个表,其中包含存储为 varchars 的选择查询和插入查询。我必须执行选择查询并使用插入查询使用过程插入选择查询的结果。现在我正在执行立即和批量将选择查询收集到 varchars 表中。

在此之后,我转到 vartable 的每一行并获取值并将其放入插入查询中。我有许多对许多表的选择和插入查询。所以这必须动态完成。我的问题是,有没有更好的方法来存储选择查询的结果?除了使用 varchar 表?因为选择查询的结果集可能有数百万条记录,这可能会导致问题。使用嵌套表类型并在其上使用EXTEND会解决问题吗?

vartable 是 varchars2(4000) 类型的表

0 投票
3 回答
184 浏览

oracle - PL/SQL:在存储过程中出现错误 ORA-006550 PLS-00306

我开发了一个存储过程,可以发送一次通知电子邮件,这样我就不会从我的显式光标“crs”中收到 100,000 封单独的电子邮件。存储过程名称是“a_test_email”。我创建了一个名为“crs”的显式游标。游标查询 user_objects 以检查数据库中是否有任何对象无效。我对“a_test_email”存储过程如何循环发送电子邮件有疑问。“批量收集”获取光标“crs”中的所有记录,然后发送一封电子邮件,将所有行(即记录)一起显示在一封电子邮件中。但是,我不断收到错误 ORA-0065550 PLS-00306。我不确定我做错了什么。请帮助我用“a_test_email”存储过程纠正这个问题。


---以下是发送电子邮件的存储过程---


0 投票
1 回答
1110 浏览

sql - FORALL 插入目标表,然后从源表中删除 FORALL

凸轮以下可以顺利完成吗?只要将记录插入目标表,您就可以从源表中删除该记录。显然,这条记录在循环内的内存中,你能看到任何问题吗?或者可以用不同的方式完成。

我知道你们所有人都会说只需使用 APPEND 进行直接 SQL 插入,然后截断源表。

我只是好奇地把问题抛在那里。

0 投票
1 回答
1424 浏览

oracle - Oracle 11g:如何动态选择多列进入 BULK COLLECT

我有一个类似于下面示例的查询,我想使用连接从具有 4 列的表中动态批量收集 2 列,但我不断收到“变量不在选择列表中”的错误。我相信这是因为查询的列比表少,但我不知道如何解决它。

以下是表格示例:

0 投票
1 回答
6957 浏览

oracle - 如何从批量收集的记录类型表中进行选择

我有一个过程,出于性能原因,我需要为下游操作缓存一些数据。

定义TYPE有效

BULK COLLECT INTO作品_

SELECT不起作用_

产量:

错误(#,#):PL/SQL:ORA-00942:表或视图不存在

我也尝试将它包装在一个表函数中,就像我在其他地方使用我的单列类型一样,但这也不起作用

错误(#,#):PL/SQL:ORA-22905:无法访问非嵌套表项中的行

0 投票
1 回答
366 浏览

sql - 将 Oracle 的复合类型转换为 Postgres 并在 Postgres 中批量收集兼容的等价物时出现问题

在 Oracle 中,我们有一个函数,我们使用批量收集来获取数据并存储在类似的变量中。

其中 v_emp_array 是一种类型:

甲骨文: CREATE OR REPLACE TYPE v_emp_array IS TABLE OF VARCHAR2(4000);

请帮助在 PostgreSQL 中获得此功能。

作为这些新手,我无法找到正确的语法。

0 投票
1 回答
1666 浏览

oracle - 使用 LOOP 将 Oracle 批量收集到集合中

http://www.oracle.com/technetwork/issue-archive/2008/08-mar/o28plsql-095155.html

在此页面中,他们提到:

当您使用 BULK COLLECT 和集合从游标中获取数据时,您永远不应依赖游标属性来决定是否终止循环和数据处理。

他提到,为了确保我们的查询处理所有行,我们应该

不使用:

何时退出

游标%NOTFOUND;

我们应该使用:

何时退出

集合变量.count=0;

是什么原因?

0 投票
2 回答
74 浏览

plsql - 如何将代码的一部分作为字符串放入表中以在过程中使用它?

我正在尝试解决以下问题:我需要准备包含 3 列的表:user_id、月份值。来自 200 多个用户的每个用户都有不同的参数值来确定期望值,它们是:LOB、CHANNEL、SUBSIDIARY。所以我决定将它存储在表 ASYSTENT_GOALS_SET 中。但是我想避免将行相乘,并认为将所有条件作为代码的一部分放在我将在过程中进一步用于“where”子句的代码中会很好。因此,作为示例 - 而不是多行:

在此处输入图像描述

我创建了这样的条目: 在此处输入图像描述

到目前为止,我创建了测试表 ASYSTENT_TEST(我在其中收集特定用户的月份和值)。我写了一段使用 BULK COLLECT 的程序。

所以现在当表 ASYSTENT_GOALS_SET 列 SUBSIDIARY (varchar) 包含字符串 12_00_00 (这是子公司之一的代码)时,一切正常。但问题是当用户在两个子公司工作时,比如说 12_00_00 和 13_00_00。我不知道如何写下来。SUBSIDIARY 列是否应该包含:'12_00_00'、'13_00_00' 或 "12_00_00"、"13_00_00" 或者可能是 12_00_00'、'13_00_00 在挖掘诸如“使用单/转义/双引号”之类的主题后,我尝试了很多选项。也许我也应该立即执行更改?

或者我对这个问题的处理方法从一开始就完全错误(希望不是:))。我将不胜感激。

0 投票
1 回答
1728 浏览

oracle - BULK COLLECT 的奇怪行为

我修补了以下 PL/SQL BULK-COLLECT,它对于大型表 (>50.000.000) 的更新工作速度惊人。唯一的问题是,它不执行每个表剩余 < 5000 行的更新。5000 是 FETCH 指令的给定限制:

我的错误在哪里?不过对我来说它看起来是正确的。

0 投票
1 回答
2122 浏览

oracle - 如何将批量获取的行附加到 oracle 中的表类型?

我正在从 Cursor-B 为光标-A 中的每条记录批量收集记录,有没有办法将此 Cursor-B 数据附加到表类型,以便我可以一次将其插入表中?

  • 我无法组合 cursor-A 和 Cursor-B SQL。
  • 我知道 BULK COLLECT 永远不会附加到集合中,但有什么方法可以实现我所提到的。