Я сталкиваюсь с этой ошибкой: ORA-06502 numari c или ошибка значения, значение ключа индекса нулевой таблицы . Я указал Строка ошибки в коде. Я уже видел эту SO ссылку , но это не помогло.
Определение типа записи
--*************************************************************************--
TYPE REC_SYN IS RECORD(
TAB_VALUE VARCHAR2(4000),
USER_ID VARCHAR2(30),
TERMINAL VARCHAR2(30),
TRN_DATE DATE,
ORIGINAL_USER_ID VARCHAR2(30),
ORIGINAL_TERMINAL VARCHAR2(30),
ORIGINAL_TRN_DATE DATE,
LOC_ID VARCHAR2(3),
ZON_ID VARCHAR2(3),
ORG_ID VARCHAR2(3),
WS_SYNC_DATE DATE,
VALUE_FROM CHAR(1));
--defining table of record
TYPE TAB_REC_SYN IS TABLE OF REC_SYN;
-- table of record group into variable
V_DATA HIS.PKG_SPECIFICATION_TYPES.TAB_REC_SYN;
V_INDEX BINARY_INTEGER;--PLS_INTEGER;
V_REC_SYN HIS.PKG_SPECIFICATION_TYPES.REC_SYN;
-- defining cursor
TYPE CUR_HIST IS REF CURSOR;
V_CUR_HIST CUR_HIST;
V_QUERY := ' SELECT DISTINCT D.' ||P_COLUMN || ' AS TAB_VALUE,
D.USER_ID,
D.TERMINAL,
D.TRN_DATE,
D.ORIGINAL_USER_ID,
D.ORIGINAL_TERMINAL,
D.ORIGINAL_TRN_DATE,
D.ORG_ID,
D.ZON_ID,
D.LOC_ID,
D.WS_SYNC_DATE,
''O'' AS VALUE_FROM
FROM ' || P_OWNER || '.' || P_TABLE_NAME || ' D
WHERE 1 = 1 ' || P_KEY_COLUMN || V_DATE ||
' UNION
SELECT D.' || P_COLUMN || ' AS TAB_VALUE,
D.NEW_USER_ID AS USER_ID,
D.NEW_TERMINAL AS TERMINAL,
D.NEW_TRN_DATE AS TRN_DATE,
D.ORIGINAL_USER_ID,
D.ORIGINAL_TERMINAL,
D.ORIGINAL_TRN_DATE,
D.ORG_ID,
D.ZON_ID,
D.LOC_ID,
D.WS_SYNC_DATE,
''S'' AS VALUE_FROM
FROM ' || V_SYN_OWNER || ' D
WHERE 1 = 1 ' || P_KEY_COLUMN || V_DATE;
--fetching cursor
OPEN V_CUR_HIST FOR V_QUERY;
--v_query have my select statement
--loop started
LOOP
FETCH V_CUR_HIST
INTO V_REC_SYN;
EXIT WHEN V_CUR_HIST%NOTFOUND;
V_DATA(V_INDEX).TAB_VALUE := V_REC_SYN.TAB_VALUE; -- Error line
V_DATA(V_INDEX).USER_ID := V_REC_SYN.USER_ID;
V_DATA(V_INDEX).TERMINAL := V_REC_SYN.TERMINAL;
V_DATA(V_INDEX).TRN_DATE := V_REC_SYN.TRN_DATE;
V_DATA(V_INDEX).ORIGINAL_USER_ID := V_REC_SYN.ORIGINAL_USER_ID;
V_DATA(V_INDEX).ORIGINAL_TERMINAL := V_REC_SYN.ORIGINAL_TERMINAL;
V_DATA(V_INDEX).ORIGINAL_TRN_DATE := V_REC_SYN.ORIGINAL_TRN_DATE;
V_DATA(V_INDEX).ORG_ID := V_REC_SYN.ORG_ID;
V_DATA(V_INDEX).ZON_ID := V_REC_SYN.ZON_ID;
V_DATA(V_INDEX).LOC_ID := V_REC_SYN.LOC_ID;
V_DATA(V_INDEX).WS_SYNC_DATE := V_REC_SYN.WS_SYNC_DATE;
V_DATA(V_INDEX).VALUE_FROM := V_REC_SYN.VALUE_FROM;
--adding 1 into index
V_INDEX := V_INDEX + 1;
PIPE ROW(V_REC_SYN);
--loop ended
END LOOP;