Всем привет! Прошу помочь разобраться в такой вот ситуации:
В общем написан пакет с функцией возвращающей данные из таблицы:
1. Спецификация пакета:
CREATE OR REPLACE PACKAGE z_026_TEST_blk AS
TYPE MEASURE_RECORD IS RECORD(l_CODE varchar(10), T_ID number, T_CODE varchar(10), T_NAME varchar(10), B_NFIRE number, B_LONGNAME varchar(10), B_EXEC_COND varchar(10));
TYPE z_026_blkoper IS TABLE OF MEASURE_RECORD;
FUNCTION GET_blk(l_operblk varchar2) RETURN z_026_blkoper
PIPELINED;
END z_026_TEST_blk;
2. Тело пакета
CREATE OR REPLACE PACKAGE BODY z_026_TEST_blk AS
FUNCTION GET_blk(l_operblk varchar2) RETURN z_026_blkoper PIPELINED IS
rec measure_record;
BEGIN
select S.CODE, T.ID, T.CODE, T.NAME, B.NFIRE, B.LONGNAME, B.EXEC_COND
COLLECT INTO rec
from SCEN T, SC_BLK B, BDSCR S
WHERE T.ID = B.ID
AND T.NORD = B.NORD
AND T.ID = S.ID
AND t.ARCFL = '0'
AND s.CODE = l_operblk
ORDER BY T.NAME, B.NFIRE;
RETURN;
END GET_blk;
END z_026_TEST_blk;
Запуск запроса с функцией:
SELECT z_026_TEST_blk.GET_blk('ACC_GL') FROM DUAL
SELECT * FROM table(z_026_TEST_blk.GET_blk('ACC_GL'));
Ошибка:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Полагаю ругается на выборку. Кто может подсказать в чем может быть проблема, где мне нужно поправить?