【发布时间】:2020-10-12 12:32:00
【问题描述】:
我在 PL/SQL 中编写了以下代码,它可以工作:
declare
type deliveryStat_o IS record (
warehouseName varchar2(20), shipMode char(30), thirty_days number, sixty_days number,
ninety_days number, oneTwenty_days number, veryLate number
);
type deliveryStat_t is TABLE OF deliveryStat_o;
statTable deliveryStat_t;
begin
SELECT w_warehouse_name, sm_type, 1 AS thirty_days, 1 AS sixty_days, 1 AS ninety_days,
1 AS oneTwenty_days, 1 AS veryLateDelivery
bulk collect into statTable
FROM catalog_sales, warehouse, ship_mode, date_dim
WHERE cs_ship_date_sk = d_date_sk
AND cs_warehouse_sk = w_warehouse_sk
AND cs_ship_mode_sk = sm_ship_mode_sk
GROUP BY w_warehouse_name,
sm_type ;
end;
如何在返回嵌套集合 statTable 的表函数中 执行此操作。我知道这可能可以使用显式游标来完成;但是,是否可以不使用光标来做到这一点?
【问题讨论】:
-
不清楚你在做什么。您帖子中的插入语句在哪里?你到底想做什么?请解释一下我们什么都不知道。
-
如果我得到你,你有两个选择 1. 创建一个对象类型并使用它而不是本地类型 2.将与您显示的相同的代码放入一个包中并使函数流水线化。
-
另外提供表格描述 (ddl)、样本测试数据,格式文本 - 无图像是该数据的预期输出。
标签: oracle plsql bulkinsert database-cursor table-functions