@Raushka

Почему функция возвращающая данные из таблицы не срабатывает (PL/SQL: numeric or value error: character string buffer too small)?

Всем привет! Прошу помочь разобраться в такой вот ситуации:
В общем написан пакет с функцией возвращающей данные из таблицы:

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

Полагаю ругается на выборку. Кто может подсказать в чем может быть проблема, где мне нужно поправить?
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
Ну похоже поле в рекорде не достаточно для приёма значения, в него передаваемого. И похоже идёт передача не строкового значения в строку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы