2015-01-26 2 views
0

Я создал тип для subj_code, как показано ниже:выражения ошибки неправильного типа в оракуле

TYPE t_c_subj_code IS TABLE OF student.subj_code%TYPE INDEX BY PLS_INTEGER; 

поля i_Subj_Code содержит список subj_code. Я хочу выбрать subj_code, который не находится в списке i_Subj_Code.
Я пытаюсь ниже процедуры:

Procedure GET_Test(i_P_No in varchar2, 
        i_Subj_Code IN t_c_subj_code, 
        o_cursor out t_cursor) is 

BEGIN 
    OPEN o_cursor FOR 
     Select tt.c_subj_code 
     from student tt 
    where 
     tt.i_P_No =i_P_No and 
     tt.subj_code NOT IN 
      (SELECT COLUMN_VALUE FROM TABLE(i_Subj_Code)); 
END; 
+0

Где вы это заявили? Это недопустимое объявление типа вне PL/SQL, что означает, что вы сделали это в спецификации/корпусе пакета? – Ben

+0

Да, я объявил это в спецификации пакета. где мы объявляем все имена функций и процедур. Где мне нужно указать это? – pallavi

+0

В SQL; 'create или replace type как объект ...' вы используете его в SQL, поэтому вы должны объявить его в SQL. – Ben

ответ

1

Если вы действительно хотите сделать это в заявлении один SQL можно реализовать pipelined function, которая возвращает необходимую часть вас коллекции и использовать его в табличной функции.

+0

Хорошо. получил смысл. Спасибо всем . – pallavi

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