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


Код: 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
ORA-01461: can bind a LONG value only for insert into a LONG column
    #39866870
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxПочему у друга слетает второй инсерт?Попробуй за PL/SQL переписать запрос с bind-ами. Глядишь, дойдёт.
...
Рейтинг: 0 / 0
ORA-01461: can bind a LONG value only for insert into a LONG column
    #39866873
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ORA-01461: can bind a LONG value only for insert into a LONG column
    #39866880
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-01461: can bind a LONG value only for insert into a LONG column
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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