powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Apex 20.2 dblink на oracle 9i
15 сообщений из 15, страница 1 из 1
Apex 20.2 dblink на oracle 9i
    #40110370
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Имеется Oracle 11.2.0.4 с Apex 20.2 на борту. Имеется второй сервер с Oracle 9.2. Конечно есть dblink на oracle 9i. Apex без проблем выбирает данные с oracle 9i через этот самый dblink, но совсем отказывается выполнять DML (insert, update). Делаю стандартный классический отчёт с формой. При попытке создать новую запись даёт ошибку ora-01461. Интересно то, что, если на форме только одно поле varchar2, то запись создаётся. Добавляешь на форму ещё одно поле varchar2 и запись уже не создаётся. Ошибка ora-01461. В таблице и на форме никаких long нет.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110390
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хватает длины поля для вставки? Типа varchar2(20), а на форме передается 4 байта и длина выходит за varchar2(20 BYTE) ?
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110398
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не думаю. Тогда была бы другая ошибка. С одним полем же прокатывает. Да и размер полей пробовал увеличивать в 3 раза
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110400
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110906
Dubanos_II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
revenko@@,

а как выглядит DML операция, исполняемая формой?
и еще скиньте, пожалуйста, скрипт создания таблицы на стороне 9i, в которую делаете вставку

судя по ошибке, где-то по дороге затесалась попытка вставки в колонку, которая не является varchar2
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110920
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create table T201
(
  nsyst     NUMBER(9),
  fam       VARCHAR2(30),
  imj       VARCHAR2(20),
  otch      VARCHAR2(20),
  d_rojd    NUMBER(2),
  m_rojd    NUMBER(2),
  y_rojd    NUMBER(4),
  n_phone   NUMBER,
  otvet     VARCHAR2(1024),
  ibd_arx   NUMBER(1),
  kodreg    NUMBER(22),
  kodrai    VARCHAR2(20),
  sh_polz   NUMBER(22),
  dt_reg    DATE,
  dt_izm    DATE,
  sh_polz1  NUMBER(22),
  dostup    VARCHAR2(2),
  dt_send   DATE,
  organ     NUMBER(3),
  cn_delarx NUMBER(9),
  fam_init  VARCHAR2(30)
);


Вот предложение, которое генерирует Apex
Код: sql
1.
2.
3.
4.
5.
6.
7.
INSERT INTO
  (SELECT * FROM T201@UPMO2005 WITH CHECK OPTION)
  ("NSYST", "FAM", "IMJ", "OTCH", "D_ROJD", "M_ROJD", "Y_ROJD", "N_PHONE",
   "FAM_INIT", "SH_POLZ")
VALUES
  (:APEX$VAL1, :APEX$VAL2, :APEX$VAL3, :APEX$VAL4, :APEX$VAL5, :APEX$VAL6,
   :APEX$VAL7, :APEX$VAL8, :APEX$VAL9, :APEX$VAL10)
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110924
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И если точно, то версия Oracle 9.2.0.8
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110961
Michael Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
revenko@@,

попробуйте не из под APEX выполнить.

1) У вас вот это работает из под SQL+, Oracle SQL Developer, PLSQLDeveloper и т.д.? (: или & в зависимости от инструмента)?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
INSERT INTO
  (SELECT * FROM T201@UPMO2005 WITH CHECK OPTION)
  ("NSYST", "FAM", "IMJ", "OTCH", "D_ROJD", "M_ROJD", "Y_ROJD", "N_PHONE",
   "FAM_INIT", "SH_POLZ")
VALUES
  (:APEX$VAL1, :APEX$VAL2, :APEX$VAL3, :APEX$VAL4, :APEX$VAL5, :APEX$VAL6,
   :APEX$VAL7, :APEX$VAL8, :APEX$VAL9, :APEX$VAL10)



2) А вот в такой форме работает из под SQL+, Oracle SQL Developer, PLSQLDeveloper и т.д.?

Код: plsql
1.
2.
3.
4.
5.
6.
INSERT INTO T201@UPMO2005  
  ("NSYST", "FAM", "IMJ", "OTCH", "D_ROJD", "M_ROJD", "Y_ROJD", "N_PHONE",
   "FAM_INIT", "SH_POLZ")
VALUES
  (:APEX$VAL1, :APEX$VAL2, :APEX$VAL3, :APEX$VAL4, :APEX$VAL5, :APEX$VAL6,
   :APEX$VAL7, :APEX$VAL8, :APEX$VAL9, :APEX$VAL10)
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40110988
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Michael Isaev,

Да. Тут проблем не возникает. Pl/sql Developer не биндит же, а просто подставляет значения.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40111138
Dubanos_II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
revenko@@,

1. передаете ли вы в любое из текстовых полей одно из следующего: а) NULL, б) число? Если да, попробуйте в конце добивать пробелом. Я сталкивался с подобной проблемой, когда оракл неверно трактовал тип данных при работе по дблинку (похоже, где-то делал неявное преобразование)

2. запустите инсерт в Test Window, которое поддерживает bind variables. Интересно, отработает ли.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40111195
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dubanos_II,
1. Передаю полностью заполненную форму, значения которой соответствуют типам полей.
2. К сожалению не знаю где этот Test window в Apex. И как его запустить тоже не нагуглил.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40111201
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу напомнить, что форма с одним текстовым полем нормально отрабатывает. Даже если это поле заполнено до максимальной длины. Числовые поля, конечно, вставляются без проблем. Как только добавляю ещё одно текстовое поле, появляется ошибка вставки.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40111263
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долго помучевшись получилось сделать ввод через хранимую процедуру. Очень не удобный способ.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40111296
Michael Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
revenko@@
Долго помучевшись получилось сделать ввод через хранимую процедуру. Очень не удобный способ.

1. Вот видите, все оказалось нормально
2. На самом деле, путь с хранимыми процедурами - самый правильный. Почитайте что такое API, что такое MVC для чего они нужны и почему это хорошо (не обязательно применительно к продуктам Oraсle и PL/SQL, а вообще, и в частности для Oracle APEX). Непосредственный запрос и вставка данных из/в таблицу в APEX - это не самый лучший путь, так как при этом затруднительно сделать форму основанную на данных нескольких таблиц, организовать проверки и бизнес-логику. И этот способ годится разве что для быстрого прототипирования и показа заказчику. А финальную версию надо делать с использованием API на PL/SQL
3. Иногда еще может помочь следующий способ "подсказки Oracle"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
INSERT INTO T201@UPMO2005  
  ("NSYST", "FAM", "IMJ", "OTCH", "D_ROJD", "M_ROJD", "Y_ROJD", "N_PHONE",
   "FAM_INIT", "SH_POLZ")
VALUES
( TO_NUMBER(:APEX$VAL1)
, SUBSTR(TO_CHAR(:APEX$VAL2),1,30)
, SUBSTR(TO_CHAR(:APEX$VAL3),1,30)
, SUBSTR(TO_CHAR(:APEX$VAL4),1,30)
, TO_NUMBER(:APEX$VAL5)
, TO_NUMBER(:APEX$VAL6)
, TO_NUMBER(:APEX$VAL7)
, TO_NUMBER(:APEX$VAL8)
, SUBSTR(TO_CHAR(:APEX$VAL9),1,30)
, TO_NUMBER(:APEX$VAL10)
)


Но это масло-маслянное.

4. Кстати, почему у вас в таблице на дату рождения не одно поле
Код: plsql
1.
date_birth DATE


а целых 3?
Код: plsql
1.
2.
3.
  d_rojd    NUMBER(2),
  m_rojd    NUMBER(2),
  y_rojd    NUMBER(4),


Мне кажется это какой-то косяк проектирования.
...
Рейтинг: 0 / 0
Apex 20.2 dblink на oracle 9i
    #40111337
revenko@@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Michael Isaev,

3 поля было сделано не нами. Клиент тоже был сделан под 3 поля и исходников у нас нет. Не знаю для чего так сделано было.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Apex 20.2 dblink на oracle 9i
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (9): Анонимы (6), Bing Bot, RePredeclared, Yandex Bot
x
x
Закрыть


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