|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Здравствуйте. Имеется 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 нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 16:29 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Не хватает длины поля для вставки? Типа varchar2(20), а на форме передается 4 байта и длина выходит за varchar2(20 BYTE) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 17:18 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Не думаю. Тогда была бы другая ошибка. С одним полем же прокатывает. Да и размер полей пробовал увеличивать в 3 раза ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 17:35 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
revenko@@, а как выглядит DML операция, исполняемая формой? и еще скиньте, пожалуйста, скрипт создания таблицы на стороне 9i, в которую делаете вставку судя по ошибке, где-то по дороге затесалась попытка вставки в колонку, которая не является varchar2 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2021, 23:15 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Код: 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.
Вот предложение, которое генерирует Apex Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 06:01 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
И если точно, то версия Oracle 9.2.0.8 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 07:45 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
revenko@@, попробуйте не из под APEX выполнить. 1) У вас вот это работает из под SQL+, Oracle SQL Developer, PLSQLDeveloper и т.д.? (: или & в зависимости от инструмента)? Код: plsql 1. 2. 3. 4. 5. 6. 7.
2) А вот в такой форме работает из под SQL+, Oracle SQL Developer, PLSQLDeveloper и т.д.? Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 10:55 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Michael Isaev, Да. Тут проблем не возникает. Pl/sql Developer не биндит же, а просто подставляет значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 12:33 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
revenko@@, 1. передаете ли вы в любое из текстовых полей одно из следующего: а) NULL, б) число? Если да, попробуйте в конце добивать пробелом. Я сталкивался с подобной проблемой, когда оракл неверно трактовал тип данных при работе по дблинку (похоже, где-то делал неявное преобразование) 2. запустите инсерт в Test Window, которое поддерживает bind variables. Интересно, отработает ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2021, 19:23 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Dubanos_II, 1. Передаю полностью заполненную форму, значения которой соответствуют типам полей. 2. К сожалению не знаю где этот Test window в Apex. И как его запустить тоже не нагуглил. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 05:20 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Хочу напомнить, что форма с одним текстовым полем нормально отрабатывает. Даже если это поле заполнено до максимальной длины. Числовые поля, конечно, вставляются без проблем. Как только добавляю ещё одно текстовое поле, появляется ошибка вставки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 08:25 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
Долго помучевшись получилось сделать ввод через хранимую процедуру. Очень не удобный способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 12:11 |
|
Apex 20.2 dblink на oracle 9i
|
|||
---|---|---|---|
#18+
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.
Но это масло-маслянное. 4. Кстати, почему у вас в таблице на дату рождения не одно поле Код: plsql 1.
а целых 3? Код: plsql 1. 2. 3.
Мне кажется это какой-то косяк проектирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:30 |
|
|
start [/forum/topic.php?fid=50&msg=40111337&tid=1873776]: |
0ms |
get settings: |
3ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
36ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
272ms |
get tp. blocked users: |
0ms |
others: | 356ms |
total: | 678ms |
0 / 0 |