【发布时间】:2019-09-14 19:25:00
【问题描述】:
我想编写一个 PL/SQL 函数,该函数可用于各种查询,尤其是 WITH 子句的子查询。棘手的部分是我希望该函数同时 receive 和 return 单列 TABLE(或 CURSOR)信息。
详细信息:假设这个函数只是根据一些非常复杂的标准对员工 ID 列表进行排序。我们会有这个:
- 我的函数名为 SORT_EMPLOYEES
- 我的函数将包含员工 ID (emp_id) 的 1 列表作为输入。
- 此输入类型可能是 TABLE 类型 EMP_T_TYPE。
- 此返回类型可能也是 TABLE 类型 EMP_T_TYPE。
到目前为止一切顺利,我希望。
现在,我认为我几乎可以在任何地方使用带有 TABLE 运算符的函数输出;例如:
WITH
wanted_emps AS (...), -- find employees we want, as table of emp_id
ranked_emps AS (
SELECT rownum() as rank, emp_id
FROM TABLE(SORT_EMPLOYEES(...???...))
),
...
问题是:如何从 'wanted_emps' 获取员工列表并将其作为 SORT_EMPLOYEES 的输入?上面的“...???...”中有什么内容?这甚至可能吗?
请注意,我希望从普通 SQL 中使用它,尤其是从上面所示的 WITH 子句的子查询中使用它——而不是从 PL/SQL 中使用。谢谢!
【问题讨论】:
标签: sql oracle function common-table-expression