|
|
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenНу если это единственный способ, что поделать! В FAQ написано, как использовать коллекции из пакета, а отнюдь не отдельную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 09:28 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
tru55studierenНу если это единственный способ, что поделать! В FAQ написано, как использовать коллекции из пакета, а отнюдь не отдельную таблицу. Не смог осилить. Можете простенький пример показать? Да хоть в примере "контракты" и "платежи". Мне показалось, что там в FAQ не мой случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 09:36 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenНе смог осилить. Можете простенький пример показать? Да хоть в примере "контракты" и "платежи". Мне показалось, что там в FAQ не мой случай. простенький пример из документации Example 9-10 Compound Trigger Avoids Mutating-Table Error\ Код: 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. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 10:04 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studieren, С подходом чтения изменяемой таблицы в триггере этого не решить без блокировки мастер-ключа. У dbms_lock свои недостатки при интенсивном использовании большого количества значений, да еще коммит на аллокейт. Можно, конечно, эксклюзивить всю таблицу. Посему, в оракле предпочитают использовать более оракловые подходы ограничения агрегатов промеж строк. Или вообще не ограничивать на стороне БД. Мало ли, какие еще нереляционные сложносвязанные бизнес-требования могут применяться в приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 10:13 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenВячеслав Любомудров,Не очень понятно, почему ты мне это адресуешь studierenПрочёл книжку "ORACLE PL/SQL Как писать мощные и гибкие программы на PL/SQL" Кристофер Аллен.Судя по написаному, читать такое не стоит studierenНу если это единственный способ, что поделать! Буду так. Но я в шоке от корпорации ORACLE.Это самый извращенный способ, мне, честно говоря, и в голову такое прийти не могло (правда, я не разработчик). По-поводу шока, ты так и не сказал, как нужно вести себя (твое ограничение в 1500 на сумму платежей) я использую все тот же пример Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Обновляем несколько строк Код: 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. Просто добавили индекс Код: 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. PS. А как себя поведет MS SQL? Точнее, как там разруливаются такие ситуации -- зависимость результата от порядка обработки Или ты просто никогда не задумывался над этим? А Оракл за тебя подумал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 10:35 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровstudierenВячеслав Любомудров,Не очень понятно, почему ты мне это адресуешь Извиняюсь, я просто нажал "Ответить", а т.к. последнее сообщение было Ваше, Ваше имя и осталось. Сорри, не удалил. Вячеслав ЛюбомудровPS. А как себя поведет MS SQL? Точнее, как там разруливаются такие ситуации -- зависимость результата от порядка обработки Или ты просто никогда не задумывался над этим? А Оракл за тебя подумал Да там Все просто. Когда в одно и то же время меняете 2 и более записей (разумеется и там порядок изменений не имеет значений) и если хотя бы в одной записи "осечка", то сервер не даст сохранить всем изменениям. Поэтому всё работает чётко как запланировано разработчиком БД. Да, кстати, там триггер не работает по принципу "FOR EACH ROW", там такого нет. Всё целиком, все записи одновременно. Любые изменения будут в логической таблице "Inserted", а удалённые в "Deleted". Если нужно узнать новое и удаленное значение, то выдёргиваем из этих таблиц. Как то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 13:27 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenКогда в одно и то же время меняете 2 и более записей (разумеется и там порядок изменений не имеет значений) и если хотя бы в одной записи "осечка", то сервер не даст сохранить всем изменениям. Так нет никакой "осечки". Всё отлично вставляется и модифицируется из параллельных коннектов. Но твоё ограничение при этом - нарушается. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2016, 17:36 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Приветствую форумчан! Вопрос № 1. Есть поле "LastModifiedDate", где необходимо сохранить последнюю дату и время обновления каждой записи. Если ввести новую запись, то достаточно в значение по умолчанию указать SYSDATE. А как в триггере надо написать, чтобы ORACLE не ругался на мутирующую таблицу во время обновления записи? Пробовал разные варианты, но почему то ORACLE ругается. Вопрос № 2. В MS SQL Server при обновлении записи я мог использовать CTE, что-то вроде этого: Код: sql 1. 2. 3. 4. 5. 6. Но как я понимаю, в ORACLE такое не пойдёт. Пробовал вот так. Код: plsql 1. 2. 3. Работать то конечно работает, но оооооочень медленно! Разумеется запрос на обновление не самое оптимальное. Но а как ускорить / оптимизировать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 08:55 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenА как в триггере надо написать, чтобы ORACLE не ругался на мутирующую таблицу во время обновления записи?RTFM DML Triggers: Correlation Names and Pseudorecords (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 09:09 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Добрый день! Как сделать уникальным все непустые значения поля "А" в таблице "Table1" в Oracle? В MS SQl Server можно создать уникальный индекс с фильтром. Что-то вроде этого: Код: sql 1. После этого сервер не позволяет дублировать НЕ пустые значения. А вот если поле "А" не заполнено пользователем, то сервер сколько угодно записей может сохранить без проблем. Мне нужно тоже самое и в ORACLE. Пожалуйста, подскажите куда рыть. Спасибо заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 08:25 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studieren, просто создай уникальный индекс. и всё. работать будет именно так, как ты хочешь: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 08:37 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Прошу прошения я неправильно написал. У меня в реальной базе индекс состоит из 2 полей. Код: sql 1. Поле "B" обязательное, поэтому там пустое значение не может быть. Не думал, что ORACLE допускает ввод пустых значений, если индекс состоит из одного поля. Может мне создать "Function-based index", где конкатенирую 2 поля и полученное значение попробую сделать уникальным? Сейчас попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 09:02 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Вроде бы получилось! :) Спасибо за подсказку. Правда получился дурацкий индекс, которого не буду использовать в запросах. Он будет служить только как ограничение. Ну а если у гуру есть более продвинутая идея, буду рад любым подсказкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 09:09 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenболее продвинутая идея Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 09:21 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Elic, Thank you very much! Работает однако! Взял на вооружение. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 09:44 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenКак сделать уникальным все непустые значения поля "А" в таблице "Table1" в Oracle? В MS SQl Server можно создать уникальный индекс с фильтром. Что-то вроде этого: Код: sql 1. После этого сервер не позволяет дублировать НЕ пустые значения. А вот если поле "А" не заполнено пользователем, то сервер сколько угодно записей может сохранить без проблем.null, он даже в mssql null. Неужели без этого условия mssql запрещает вставлять несколько null? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 11:52 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
-2-studierenКак сделать уникальным все непустые значения поля "А" в таблице "Table1" в Oracle? В MS SQl Server можно создать уникальный индекс с фильтром. Что-то вроде этого: Код: sql 1. После этого сервер не позволяет дублировать НЕ пустые значения. А вот если поле "А" не заполнено пользователем, то сервер сколько угодно записей может сохранить без проблем.null, он даже в mssql null. Неужели без этого условия mssql запрещает вставлять несколько null? Да, запрещает. В принципе я согласен с таким положением дел. Вот к примеру ORACLE также запрещает, но только если уникальный индекс состоит как минимум из 2 полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 16:38 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studieren, ну и в оракле вы можете и над одной колонкой сделать fbi, который обеспечит желаемое. другое дело, что обычно атрибут такой создают обязательным и проблемы нет в принципе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 17:17 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Приветствую всех. Очередной вопрос. Разве в Oracle нет пустой строки ''? Код: plsql 1. 2. 3. Получается проверять длину строки на 0 не имеет смысла? Я имею ввиду вот такое сравнение: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2016, 08:02 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2016, 08:31 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenПолучается проверять длину строки на 0 не имеет смысла? Я имею ввиду вот такое сравнение: Код: sql 1. Примите в расчет - здесь вам не BSTR. Проблема не там, где length вернет Null вместо ожидавшегося вами 0, а, наоборот, вовсе там, где он трудолюбиво займется вычислениями ее длины для непустой строки. В отличии от BSTR, где length просто читает префикс строки, здесь вы наступаете на алгоритм сложности порядка длины строки, с коэффициентом на алгоритм определения длины следующего символа для кодировок типа utf8. Просто выбросьте из головы length до тех пор, пока он вам жизненно не понадобится. А в оставшихся случаях пользуйтесь им предельно экономно, т.к. вы точно знаете, что вы за рамками BSTR. studierenПриветствую всех. Очередной вопрос. Разве в Oracle нет пустой строки ''? Код: plsql 1. 2. 3. Нет в том смысле, в каком ее длина ожидается равной нулю. Так же, как симметрично, нет строкового +, обращающего в Null результат, если один из операндов Null. Конкатенация всегда работает как &. В документации тщательно оговаривается возможность изменения поведения в будущем. Имхо, даже если так, то будущая вероятная "опасность" подстерегает только злоупотребляющих ANSI-формулировками для имен типов. Не могу сказать, что таких борцов за переносимость не может быть, но своими глазами не только видел, но искренне надеюсь уже и не увидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2016, 15:29 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
Очередная проблема. Есть поле в SQL Server varchar(8000). Т.к. в ORACLE максимальная длина 4000, пришлось мне создать 2 поля с типом данных Varchar2(4000). Далее, создал виртуальное поле, которое соединяет эти поля. Но не тут то было. Оказывается при конкатенации ORACLE всё равно ругается, если общая длина строк превышает 4000. Как мне быть? Есть способ как то обойти данное ограничение? Спасибо заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 15:23 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studierenКак мне быть? Use CLOB, Luke! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 15:33 |
|
||
|
Перевод из MS SQL Server в ORACLE
|
|||
|---|---|---|---|
|
#18+
studieren, на 12c нет лимита 4000 байт на varchar2 столбцах на серверах < 12с есть, например, тип CLOB короче, Как мне быть? читайте.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 15:40 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39255448&tid=1886761]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
202ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 529ms |

| 0 / 0 |
