character string buffer too small перевод

«PL/SQL: numeric or value error%s»
*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 версии 11R2.
Если не можете справиться — поищите эту ошибку на форуме по ссылке выше, многие ошибки мы уже разобрали.
Не получается — обязательно напишите, разберем, попробуем, пощупаем, понюхаем.
Главное — не паникуйте, но всегда, в первую очередь убедитесь, что бекап есть и сделайте бекап того, что сейчас имеете 🙂

Я начал получать сообщение об ошибке ниже, так как я добавил o_ID к процедуре, все работало нормально, пока я не добавил в o_ID это связано с o_ID быть установленным как неправильный тип данных возможно? Я просмотрел любые другие связанные темы на SO, но безрезультатно.

o_ID изначально устанавливается, как показано ниже PR_LOAD_XML_FILE называется:

Из журналов

Процедура Spec

Тело процедуры

Решение

Я думаю, что когда вы вызываете свою процедуру, вы устанавливаете переменную для получения значения o_ID в виде строки. Вот мой пакет, который издевается над твоим:

В SQL * Plus я сначала определю эти две переменные связывания. Обратите внимание, что для переменной bind v_o_ID установлено значение varchar2 (4). Это предназначено для потерпеть поражение потому что значение o_ID установлено в 999999 в процедуре, которая длиннее 4 символов (если значение o_ID было установлено равным 9999, что составляет 4 символа или менее, то вызов процедуры работал бы нормально, но ошибка все равно будет присутствовать, и будет появляться Вы, как только значение o_ID станет больше 4 символов):

Теперь я вызываю процедуру в SQL * Plus, и она будет потерпеть поражение:

Теперь я установлю переменную связывания v_o_ID в число, и вызов процедуры будет успех. Вы можете увидеть полученные значения из процедуры, если вы печатаете переменные связывания, используя print команда:

Etwas

Новичок

Ошибка: буфер символьных строк слишком маленький

В чем может быть ошибка?
Вызываю функцию, при в одном случае работает, в другом выдает ошибку

ociexecute() [function.ociexecute]: OCIStmtExecute: ORA-06502: PL/SQL: : буфер символьных строк слишком маленький ошибка числа или значения ORA-06512: на line 1

в PL/SQL тестил функцию, работает отлично.

declare v_time date;
begin v_time:=to_datev_ts,’YYYY-MM-DD-HH24-MI-SS’);
:return := paket.fn_cash_save(
v_kazna_kassa_id => :v_kazna_kassa_id,
v_cash_date => :v_cash_date,
v_summa => :v_summa,
v_remarks => :v_remarks,
v_user_id => :v_user_id,
v_ts => v_time,
v_object_id => :v_object_id,
v_errormsg => :v_errormsg);
:v_ts := to_char(v_time,’YYYY-MM-DD-HH24-MI-SS’);
end;

если v_object_id передавать не 0, то все нормально, но иногда нужно, чтобы отправить именно 0.

Источник: computermaker.info

Понравилась статья? Поделиться с друзьями:
Ок! Компьютер
Добавить комментарий