我从一个对象表中选择一些信息并填充其他类型。
我正在尝试在对象表中使用GROUP BY子句。
但是我一直得到ORA-00979: not a GROUP BY expression
my_type object_type1;
l_TBL_OF_my_type object_type1_tbl; --table of object_type1
Source_type_TBL object_type2_tbl; --table of another object_type
SELECT my_type(TBL.NAME,
TBL.SOURCE_NAME,
null,
null,
TBL.TARGET_NAME,
NULL,
NULL,
NULL,
1,
NULL) BULK COLLECT
INTO l_TBL_OF_my_type
FROM TABLE(Source_type_TBL) TBL
GROUP BY TBL.TARGET_NAME;
我该如何解决这个问题?
答案 0 :(得分:0)
试试这个。
COLLECT
是一个聚合函数,它将任何类型的列作为其参数,并创建一个输入类型的嵌套表。
cast
- 将临时收集转换为您的收藏。
SELECT cast(collect(my_type(TBL.NAME,
TBL.SOURCE_NAME,
null,
null,
TBL.TARGET_NAME,
NULL,
NULL,
NULL,
1,
NULL)) as object_type1_tbl)
INTO l_TBL_OF_my_type
FROM TABLE(Source_type_TBL) TBL
GROUP BY TBL.TARGET_NAME;
答案 1 :(得分:0)
我已经解决了。
我必须按所有选定的字段进行分组。
SELECT my_type(TBL.NAME,
TBL.SOURCE_NAME,
null,
null,
TBL.TARGET_NAME,
NULL,
NULL,
NULL,
1,
NULL) BULK COLLECT
INTO l_TBL_OF_my_type
FROM TABLE(Source_type_TBL) TBL
GROUP BY TBL.NAME, TBL.SOURCE_NAME, TBL.TARGET_NAME;