ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 AAA.TYPESTT

expleeve 2013-04-28 03:54:13
Schema为AAA

执行的SQL语句为
SELECT ID,STT,grouping(ID),grouping(STT)  
FROM TABLE (CORP('sys1','code1'))
group by grouping sets((ID),(STT));


错误信息为
ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 AAA.TYPESTT


自定义类型为
CREATE OR REPLACE TYPE "AAA"."TYPESTT"
AS OBJECT( ID VARCHAR2 (30),
STT VARCHAR (10))


CREATE OR REPLACE TYPE "AAA"."CORPSTT" AS TABLE OF TYPESTT


CORP函数的定义如下
CREATE
OR
REPLACE
FUNCTION "AAA"."CORP"(SYS1 VARCHAR ,
CODE1 VARCHAR)
RETURN CORPSTT PIPELINED AS V1 TYPESTT ;
VCODE VARCHAR(30);
VSYS VARCHAR(10);
V_DATE VARCHAR(10);
BEGIN
VCODE := CODE1 ;
VSYS := SYS1 ;
V_DATE := TO_CHAR(SYSDATE,'YYYY-MM-DD') ;
FOR MYROW IN
(
SELECT
ID ,
STT
FROM
RLCP
UNION ALL
SELECT
CORPID ,
CORPROLE
FROM
RRCP )
LOOP
V1 := TYPESTT(MYROW.ID, MYROW.STT);
PIPE ROW (V1);
END LOOP;
RETURN ;
END ;



请教
...全文
574 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
expleeve 2013-05-13
  • 打赏
  • 举报
回复
虽然不是我想要的,但是也谢谢楼上二位了
forgetsam 2013-05-06
  • 打赏
  • 举报
回复
引用 5 楼 expleeve 的回复:
forgetsam,谢谢你的回复,这种方法我试过了,没有问题,但是我的select语句是界面配置来的,语义层暂时不支持在外围定义with t as,需要直接在select语句中构造
那个with as 是用来造临时表用的,和你的sql没有关系。
expleeve 2013-05-03
  • 打赏
  • 举报
回复
引用 4 楼 forgetsam 的回复:
[quote=引用 2 楼 expleeve 的回复:] 谢谢回复,但是我没有找到有关方面的记录规定不能连用,能给个出处吗?
有什么不能用的,试试不就知道了。项目里一直都用grouping判断应该“小计”,“合计”,还是“总计”。
with t as (
     select 1 id, '服装' ptype, '男装' stype, 78 amount, '2009-06-25' saledate from dual union all
     select 2 id, '服装' ptype, '男装' stype, 33 amount, '2009-03-21' saledate from dual union all
     select 3 id, '服装' ptype, '男装' stype, 22 amount, '2009-12-17' saledate from dual union all
     select 4 id, '服装' ptype, '内衣' stype, 46 amount, '2009-06-25' saledate from dual union all
     select 5 id, '服装' ptype, '内衣' stype, 15 amount, '2009-01-26' saledate from dual union all
     select 6 id, '服装' ptype, '内衣' stype, 93 amount, '2009-03-13' saledate from dual 
)
select id,ptype,stype,sum(amount) samount ,grouping(id) gid,grouping(stype) gs,grouping(ptype) gp from t
     group by grouping sets((ptype,stype,id),(ptype,stype),(ptype))
[/quote] forgetsam,谢谢你的回复,这种方法我试过了,没有问题,但是我的select语句是界面配置来的,语义层暂时不支持在外围定义with t as,需要直接在select语句中构造
forgetsam 2013-05-03
  • 打赏
  • 举报
回复
引用 2 楼 expleeve 的回复:
谢谢回复,但是我没有找到有关方面的记录规定不能连用,能给个出处吗?
有什么不能用的,试试不就知道了。项目里一直都用grouping判断应该“小计”,“合计”,还是“总计”。
with t as (
     select 1 id, '服装' ptype, '男装' stype, 78 amount, '2009-06-25' saledate from dual union all
     select 2 id, '服装' ptype, '男装' stype, 33 amount, '2009-03-21' saledate from dual union all
     select 3 id, '服装' ptype, '男装' stype, 22 amount, '2009-12-17' saledate from dual union all
     select 4 id, '服装' ptype, '内衣' stype, 46 amount, '2009-06-25' saledate from dual union all
     select 5 id, '服装' ptype, '内衣' stype, 15 amount, '2009-01-26' saledate from dual union all
     select 6 id, '服装' ptype, '内衣' stype, 93 amount, '2009-03-13' saledate from dual 
)
select id,ptype,stype,sum(amount) samount ,grouping(id) gid,grouping(stype) gs,grouping(ptype) gp from t
     group by grouping sets((ptype,stype,id),(ptype,stype),(ptype))
expleeve 2013-05-02
  • 打赏
  • 举报
回复
引用 1 楼 u010412956 的回复:
GROUPING不能在grouping sets使用,只能在ROLLUP或CUBE的查询中使用。 把grouping sets 换成rollup或者cube应该没问题。
谢谢回复,但是我没有找到有关方面的记录规定不能连用,能给个出处吗?
u010412956 2013-05-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/wh62592855/article/details/4818072
u010412956 2013-04-28
  • 打赏
  • 举报
回复
GROUPING不能在grouping sets使用,只能在ROLLUP或CUBE的查询中使用。 把grouping sets 换成rollup或者cube应该没问题。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧