【问题标题】:Oracle view that passes values from a table to a function?将值从表传递到函数的 Oracle 视图?
【发布时间】:2018-06-26 18:10:56
【问题描述】:

我正在尝试创建一个将显示两列的 Oracle 视图:

Employee_ID、Department_ID

要获取部门 ID,我需要将一个雇员 ID 传递到我今天正在使用的函数中:

select * from TABLE(user.fn_department('dept',employee_id)

这将只为我提供我传递给它的employee_id 的department_ids 列表。

我可以从员工表中获取唯一员工的列表。

如何组合这两个输出?

谢谢!

【问题讨论】:

  • Edit您的问题并添加一些sample data 和基于该数据的预期输出。 Formatted textno screen shotsedit 您的问题 - 请不要在 cmets 中提供邮政编码或其他信息。
  • 返回单行的表函数不是很有效恕我直言。我建议您绕过/避免该功能。只需将函数中包含的逻辑用作视图即可。

标签: oracle function


【解决方案1】:

你可以使用类似的东西

CREATE OR REPLACE VIEW USER_DEPT_VIEW AS
  SELECT e.EMPLOYEE_ID,
         USER.FN_DEPARTMENT('dept', e.EMPLOYEE_ID) AS DEPARTMENT_ID
    FROM EMPLOYEE e;

然后您可以将其用作例如

SELECT *
  FROM USER_dEPT_VIEW
  WHERE EMPLOYEE_ID = 1234

祝你好运。

【讨论】:

  • 谢谢鲍勃!!这是难以置信的接近。我现在遇到的唯一问题是数据在 Oracle 中以单个单元格“”的形式返回,而不是值。这可能是因为一些员工有多个部门吗?如果是这样,无论如何要显示实际的employee_ids/department_ids,即使它有多行?
  • USER.FN_DEPARTMENT的返回类型是什么?
【解决方案2】:

试试这个,

SELECT b.employee_id, a.department_id
  FROM employees b, table(user.fn_department('dept',b.employee_id)) a
 ORDER by b.employee_id

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 2014-09-09
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多