PLS-00386: обнаружено несоответствие типов между курсором FETCH и переменными INTO

Следующий пакет бросков:PLS-00386: несоответствие типов обнаружено в 'V_STUDYTBL» между курсором FETCH и переменными INTO

Назначение кода: определить два типа вне пакета: один используется для отправки набора чисел в хранимый процесс, а другой - для возврата соответствующих строк из my_table

Заранее спасибо за вклад.

Create OR REPLACE Type InputTyp  AS VARRAY(200) OF VARCHAR2 (1000);

CREATE  TYPE OBJTYP AS OBJECT
   (
    A            NUMBER,
    B             VARCHAR2 (1000),       
    C        VARCHAR2 (100)       
 );
CREATE TYPE OutputTyp IS VARRAY (2000) OF   OBJTYP;
/

CREATE OR REPLACE PACKAGE my_package
AS
   PROCEDURE my_procedure(p_StudyNum   IN     InputTyp,
                                     p_StdyDtl        OutputTyp);
END my_package;
/
CREATE OR REPLACE PACKAGE BODY my_package
AS
   PROCEDURE MyProcedure(p_StudyNum   IN     InputTyp,
        p_StdyDtl        OutputTyp)
IS
  i            BINARY_INTEGER := 1;
  j            BINARY_INTEGER := 1;
  CURSOR c_StudyTbl
  IS
     SELECT A,  B, C
       FROM my_table
      WHERE Study_Number = p_StudyNum(i);

  v_StudyTbl   OBJTYP;
BEGIN
  p_StdyDtl := OutputTyp ();
  LOOP
     --  This is the first cursor opened for each of the items in the list.
      EXIT WHEN i > p_StudyNum.count;

     OPEN c_StudyTbl;
     LOOP

        FETCH c_StudyTbl INTO v_StudyTbl;
        EXIT WHEN c_StudyTbl%NOTFOUND;

        p_StdyDtl.EXTEND ();
        p_StdyDtl (j).A := v_StudyTbl.A;
        p_StdyDtl (j).B := v_StudyTbl.B;
        p_StdyDtl (j).C := v_StudyTbl.C;
        j := j + 1;
     END LOOP;
     CLOSE c_StudyTbl;
    i := i + 1;
  END LOOP;

  IF c_StudyTbl%ISOPEN
  THEN
     CLOSE c_StudyTbl;
  END IF;
EXCEPTION
  WHEN NO_DATA_FOUND
  THEN
     NULL;
END;
END my_package;
/

Ответы на вопрос(2)

Ваш ответ на вопрос