Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ошибка ORA-06502  [new]
Lena_Lu
Member

Откуда:
Сообщений: 4
Help!! Ситуация такая: из формы по нажатии на кнопку вызывается отчет (RUN_REPORT(REPORTS, 'SPS_ACT_COST_RPR_PRN', SYNCHRONOUS, RUNTIME, FILESYSTEM, pl_id, NULL,'NO','NO','PDF');). Под одним пользователем отчет запускается , а под другим выдается ошибка:
ORA-06502 PL/SQL: numeric or value errorstring

Cause: An arithmetic, numeric, string, conversion, or constraint error occurred. For example, this error occurs if an attempt is made to assign the value NULL to a variable declared NOT NULL, or if an attempt is made to assign an integer larger than 99 to a variable declared NUMBER(2).

Action: Change the data, how it is manipulated, or how it is declared so that values do not violate constraints.
Все права для работы с этой формой и отчетом даны. Причем, если работать с формой под клиентом, то все замечательно работает под любым пользователем.
Вопрос: в чем тут может быть дело?
(для справки: версия Oracle у нас 8i )
12 фев 09, 09:21    [6809655]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORA-06502  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
Вот так прямо и выдается сообщение?
ORA-06502 PL/SQL: numeric or value errorstring

Скорее всего, где-то либо валится неявное преобразование данных, либо данные не помещаются туда, куда вы их пытаетесь запихнуть.
12 фев 09, 11:34    [6810575]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORA-06502  [new]
Lena_Lu
Member

Откуда:
Сообщений: 4
Я нашла одну ошибку: размер передаваемого параметра получается больше 100 символов, уменьшив длину этого параметра (убрала одно условие) все стало получаться, но мне нужно, чтобы это условие стояло...
И вот еще что ОЧЕНЬ интересно: под одним пользователем-то передается ентот 100-значный параметр, а под другим не желает!
Тип передаваемого параметра Paramlist.
(вот как выглядит этот самый злосчастный параметр:
ADD_PARAMETER(pl_id, 'V_FILTER', TEXT_PARAMETER, V_FILTER);
где V_FILTER VARCHAR2(400);
а сам V_FILTER имеет значение: "and (mat_code like'0204%' or mat_code like'0205%' or mat_code like '0203%' or mat_code like '0207%')"
)
ParamList - это нетипированный указатель на массив или
запись указателей или значений типа LongInt, используемый
как параметр форматирования для текстовой строки.
Так вот собственно вопрос: при передаче параметра типа Paramlist из формы в отчет какую максимальную длину может иметь передваемый параметр?
12 фев 09, 12:16    [6810959]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORA-06502  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
ParamList тут ни при чем. Вопрос в том, куда именно в репорте попадает передаваемый параметр V_FILTER (как это описано в репорте?) и как он потом используется? Подозреваю, что вы пытаетесь присоединить во фразу where какого-либо запроса?
12 фев 09, 12:57    [6811298]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORA-06502  [new]
Lena_Lu
Member

Откуда:
Сообщений: 4
В репорте я использую V_FILTER как условие, вот оно:
SELECT
T8.SCF_ID SP_SCF_ID,
NVL(STR#,ROWNUM) STR,
T8.MAT_CODE GROUP_CODE,
MLC.COMMON_PKG.PGET_ADD_SPACES(T8.GROUP_NAME,56) GROUP_NAME ,
1 ONE,
T8.SER SER,
T8.PRICE PRICE,
T8.summa ,
T8.kod_skmtr,
nvl(T8.summa,0)+nvl(T8.PRICE*t8.qnt,0) summ
FROM (SELECT
SCF_ID ,
STR# ,
MAT_CODE ,
MLC.GET_MAT_NAME(MAT_CODE) GROUP_NAME,
SERIAL# SER,
PRICE_SCF PRICE,
qnt,
NVL(sum_rf,0) summa,
kod_skmtr
FROM MLC.SPS_ADD_SPEC_SCFS
WHERE (SCF_ID=:N_SCF_ID AND ID<>:N_A_SCF_ID)&V_FILTER
and (mat_code like'0204%' or mat_code like'0205%' or mat_code like '0207%')

ORDER BY STR#,GROUP_NAME) T8
а V_FILTER берется из таблицы, и там он прописан как условие:
and (mat_code like'0204%' or mat_code like'0205%' or mat_code like '0203%' or mat_code like '0207%')
12 фев 09, 13:20    [6811511]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORA-06502  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
Еще такой вопрос: конкретнее, ошибка-то возникает где? Какой ее текст? Во время выполнения отчета или _до_ его выполнения? Не может ли быть, что перед add_parameter вы пытаетесь впихнуть какое-нибудь ооочень длинное условие в v_filter varchar2(400)?
По-любому, надо все-таки перепроверить типы и размеры данных...
12 фев 09, 14:28    [6812087]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить