天天看點

oracle應為number,ORA-00932: 資料類型不一緻: 應為 NUMBER, 但卻取得 AAA.TYPESTT

ORA-00932: 資料類型不一緻: 應為 NUMBER, 但卻獲得 AAA.TYPESTT

本帖最後由 expleeve 于 2013-04-28 15:54:59 編輯

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 ;

請教

00932

資料類型不一緻

grouping sets

group by

自定義函數

分享到:

------解決方案--------------------

GROUPING不能在grouping sets使用,隻能在ROLLUP或CUBE的查詢中使用。

把grouping sets 換成rollup或者cube應該沒問題。

------解決方案--------------------

引用:謝謝回複,但是我沒有找到有關方面的記錄規定不能連用,能給個出處嗎?

有什麼不能用的,試試不就知道了。項目裡一直都用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