1

我想创建一个访问表类型 Oracle 对象的 Oracle 包。

CREATE OR REPLACE TYPE t_dept_avg_rec AS OBJECT( 
  dept  number, 
  age   number
)

CREATE OR REPLACE TYPE t_dept_avg_tab IS TABLE OF t_dept_avg_rec

如下所述,在上述对象类型表中插入少量记录。

  dept, age
  ----- ---
 - 20,   60
 - 30,   40
 - 20,   24
 - 30,   66

然后创建一个单独的 oracle 流水线函数来返回以下结果。

select dept, avg(age)
  from t_dept_avg_tab
group by dept;

这可能使用 Oracle 对象吗?

4

1 回答 1

1

t_dept_avg_tab是一种 SQL 类型,因此您可以通过 TABLE() 函数直接在 FROM 中使用它:

SQL> select dept, avg(age)
  2  from table(t_dept_avg_tab(t_dept_avg_rec(20,60)
  3                         , t_dept_avg_rec(30,40)
  4                         , t_dept_avg_rec(20,24)
  5                         , t_dept_avg_rec(30,66)))
  6  group by dept
  7  /

      DEPT   AVG(AGE)
---------- ----------
        30         53
        20         42

SQL> 
于 2013-04-08T20:51:20.873 回答