Регистрация Забыли пароль?
Логин
Пароль
Запомнить меня
Вход через ВКонтакте
Главная > Статьи > ORA-01461 один из путей исправления

ORA-01461 один из способов исправления

Сегодня я словил ошибку ORA-01461. Для повторения используйте следующий код


create table table1 (

 field1 varchar2(4000 byte)

);

 

declare

  -- максимальний размер для

  -- varchar2 в PL/SQL

  l_txt1 varchar2(32767) :=

      lpad('*', 32767, '*');

  -- максимальний размер для 

  -- varchar2 в SQL

  l_txt2 varchar2(4000) :=

    substr(l_txt1, 1, 4000);

begin

  -- на етой коменде получаем ORA-01461

  -- стреляет как как длина переменной больше 

  -- чем длина поля field1 (обяснение ниже)

  insert into table1(field1)

  values(substr(l_txt1, 1, 4000));

 

  -- но при использовании переменной с правильно

  -- длинной все будет нормально

  insert into table1(field1)

  values(substr(l_txt1, 1, 4000));

end;

/

 

drop table table1;

Когда я увидел сообщение об ошибке то первім делом глянул на структуру таблицы, но не увидел там ни единого LONG поля. Было несколько varchar2(4000 byte) полей. Подозревая проблему в превишении длины поля я попробовал заменить substr на substrb но безрезультатно, после етого я попытался спользовать локальную переменную и проблема исчезла.

Но в чем была проблема? Немного погуглив я нашел обяснение на Oracle Forum. Насколько я понял из обяснений: когда Oracle связывает пременные, то не выполняет функцию substr перед вычислением длинны переменной, в результате "думает" что длина переменной 32767 но такака ето превишает максимальную длину для SQL в 4000 то Oracle решает использовать LONG тип, что и призводит к ошибке. При использовании локальной переменной связывание происходит правильно и используеться переменная типа varchar2 вместо long.

Надеюсь комуто поможет
Удачи
Сергей

Вы можете добавить коментарий на етой странице или на странице форума тут.Постов 7.

Последний комментарий

17.01.2020
porno real chica busca chico en zaragoza pagina para mujeres solteras contactos mujeres peludas actrices porno rumanas sexo
gratis con viejos sexo gratiz porno russia chico busca chico en cantabria porno gratis hd video porno incesto porno
six descarga gratis videos porno videos de
dibujos porno sexo anal consejos sexo depilado pelicula porno en espanol contacto con mujeres no profesionales porno aleman porno lebico busco sexo en valencia mejores pajinas porno chicas contacto
malaga porno chilenas codigo lyoko porno porno gay
trio conocer mujeres para sexo mujeres sexo murcia mujeres millonarias solteras porno xxxx gratis video
porno gratis videos porno japoneses encuentros sexuales madrid porno mayores sexo en grupo amateur maduras busca chico video
de sexo revistas pornograficas video porno transexual sexo anal con mi novia intercambio
de pareja porno chico busca chico en almeria los simpsons porno sexo sin compromiso valencia erotismo sexo his
09.07.2016
If your artelcis are always this helpful, "I'll be back."
Игорь
31.03.2016
Спасибо, помогло разобраться.

Имя*E-mail
Код*