我正在開發一個查詢,返回兩列作爲結果:VARCHAR(256)
和NUMBER
。爲了儲存以備將來使用的查詢結果,我創建了下面的類型:ORA-00932 - 創建定製類型表後不一致的數據類型
-- An object representing each of the records of my query
create or replace TYPE TP_SOME_TYPE IS OBJECT(
SOME_TEXT VARCHAR2(256),
SOME_NUMBER NUMBER
);
-- A table of the objects created above:
create or replace TYPE TP_SOME_TABLE AS TABLE OF TP_SOME_TYPE;
最後,我運行一個樣品SQL
試圖收集的結果TP_SOME_TABLE
類型的變量:
DECLARE
SOME_RESULT TP_SOME_TABLE;
BEGIN
EXECUTE IMMEDIATE 'SELECT ''TEXT'' AS SOME_TEXT, 1 AS SOME_NUMBER FROM DUAL'
BULK COLLECT INTO SOME_RESULT;
END;
並得到以下錯誤消息:
ORA-00932: tipos de dados inconsistentes: esperava - obteve -
ORA-06512: em line 4
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
我試過在b定義的RECORD TYPE
代替OBJECT TYPE
由於我打算在TABLE()
調用中公開收集的結果,所以我不得不使用類似於OBJECT
的數據庫級別。
任何想法使當前的結構工作?
我的數據庫設置:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
在此先感謝。
工作就像一個魅力。感謝您的準確答案。 –