Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-01461: can bind a LONG value only for insert into a LONG column / 4 сообщений из 4, страница 1 из 1
25.09.2019, 13:53
    #39866865
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01461: can bind a LONG value only for insert into a LONG column
Доброго дня


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET               CL8MSWIN1251


SQL> desc t
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(38)
 N                                                  VARCHAR2(4000)

SQL> declare
  2   type t is table of varchar2(32000);
  3   v_t t :=t();
  4   v_v varchar2(4000);
  5  begin
  6   v_t.extend(1);
  7   v_t(1):=lpad('*',32000,'+');
  8   v_v:=substr(v_t(1),1,4000);
  9   insert into t values(1,v_v);
 10   insert into t values(2,substr(v_t(1),1,4000));
 11  end;
 12  /
declare
*
ERROR at line 1:
ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-06512: at line 10



Почему у друга слетает второй инсерт?

.....
stax
...
Рейтинг: 0 / 0
25.09.2019, 14:00
    #39866870
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01461: can bind a LONG value only for insert into a LONG column
StaxПочему у друга слетает второй инсерт?Попробуй за PL/SQL переписать запрос с bind-ами. Глядишь, дойдёт.
...
Рейтинг: 0 / 0
25.09.2019, 14:03
    #39866873
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01461: can bind a LONG value only for insert into a LONG column
Stax...
Почему у друга слетает...


https://docs.oracle.com/cd/B10501_01/appdev.920/a96624/03_types.htm
примечание к привязке Long:

Note: In SQL statements, PL/SQL binds LONG values as VARCHAR2, not as LONG. However, if the length of the bound VARCHAR2 exceeds the maximum width of a VARCHAR2 column (4000 bytes), Oracle converts the bind type to LONG automatically, then issues an error message because you cannot pass LONG values to a SQL function.
...
Рейтинг: 0 / 0
25.09.2019, 14:08
    #39866880
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01461: can bind a LONG value only for insert into a LONG column
boobyStax...
Почему у друга слетает...


https://docs.oracle.com/cd/B10501_01/appdev.920/a96624/03_types.htm
примечание к привязке Long:

Note: In SQL statements, PL/SQL binds LONG values as VARCHAR2, not as LONG. However, if the length of the bound VARCHAR2 exceeds the maximum width of a VARCHAR2 column (4000 bytes), Oracle converts the bind type to LONG automatically, then issues an error message because you cannot pass LONG values to a SQL function.

спасибо, кажись понял биндится до substr

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-01461: can bind a LONG value only for insert into a LONG column / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]