2013-06-11 4 views
0

У меня есть схема RTRD_W, построенная в базе данных Oracle 11g, которая содержит таблицу rtrd_pri, которая имеет столбец NOMNL, который имеет тип, определенный как VARRAY (10) OF KPS_ADM.NUMBER_T (объект, определенный как тип в схеме KPS_ADM). Я пытаюсь запустить запрос до , чтобы получить объект KPS_ADM.NUMBER_T внутри varray, но я все равно получаю сообщение об ошибке, возвращаемое в синтаксисе SQL. Функция I построена размещена нижеSQL Извлечение объекта из VARRAY в Oracle 11g Database

CREATE or replace function RETRIEVEPRIREF RETURN KPS_ADM.NUMBER_T AS 
REF1 KPS_ADM.NUMBER_T; 
BEGIN 
SELECT KPS_ADM.NUMBER_T INTO REF1 from table(NOMNL) WHERE (SELECT NOMNL FROM RTRD_W.rtrd_pri WHERE (syst_id like '%0516%')); 
RETURN REF1; 
END RETRIEVEPRIREF; 

Я знаю запрос: SELECT NOMNL FROM RTRD_W.rtrd_pri WHERE (syst_id like '%0516%') работы и не возвращает VARRAY с одним объектом KPS_ADM.NUMBER_T внутри него, но я не могу показаться, чтобы получить правильный синтаксис для поиска внутри varray для извлечения объекта.

Может ли кто-нибудь показать правильный синтаксис для этого?

ответ

1
-- an object defined as a type in the KPS_ADM schema 
CREATE TYPE number_t  AS OBJECT (object_value NUMBER); 
CREATE TYPE varray_number_t AS VARRAY(10) OF number_t; 

CREATE TABLE rtrd_pri 
(
    column_one NUMBER 
, column_two varray_number_t 
); 

INSERT INTO rtrd_pri VALUES(1, (varray_number_t(number_t(11), number_t(22)))); 
INSERT INTO rtrd_pri VALUES(2, (varray_number_t(number_t(33), number_t(44)))); 

SELECT column_one, OBJECT_VALUE AS column_two 
FROM rtrd_pri, TABLE(rtrd_pri.column_two) 
; 

COLUMN_ONE COLUMN_TWO 
1   11 
1   22 
2   33 
2   44 
+0

Большое спасибо за информацию. Он отлично работал для меня –

Смежные вопросы