Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
08.08.2021, 14:29
|
|||
---|---|---|---|
объектные типы или packages |
|||
#18+
Добра! Версия: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Только начинаю разбираться с ORACLE. Подскажите, в каком случае (кроме именно типов/структур данных) используются объектные типы в oracle? Ведь есть же packages там внутри можно процедуры/функции создавать. Не могу понять, зачем создавать типы с кодом внутри, с if-ами и т.д. То, что это подобие ОО подхода я понимаю. И предок есть и наследник. Я вот хочу понять, какой должна быть задача, чтобы разработчик решил - " Ага, тут без объектного типа не обойтись..." Сразу скажу - гуглил. Примеры смотрел, но ясности "зачем" они нужны пока нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.08.2021, 12:28
|
|||
---|---|---|---|
объектные типы или packages |
|||
#18+
rtyts Подскажите, в каком случае (кроме именно типов/структур данных) используются объектные типы в oracle? ... Примеры смотрел, но ясности "зачем" они нужны пока нет. И ни у кого нет. Работайте без них. Если станет очень, очень, очень их не хватать, разберетесь как, что и, главное, зачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.08.2021, 09:18
|
|||
---|---|---|---|
|
|||
объектные типы или packages |
|||
#18+
rtyts, используем Object type, когда некий код используется в нескольких отчетах, которые имеют различные условия выбора. Удобно сопровождать, меняешь только запрос в функции. Создаем Object type и table type пишем функцию заполнения Object type и обращаемся, примерно таким образом: select * from table(f_func(par1, par2)). ф-я может имеет вид типа function f_func(par1 number,par2) return t_object_type_table pipelined is cur_ sys_refcursor; begin open cur_ for 'select t_object_type(v1,v2,v3) from t1 where v1='||par1||' and '||par2||';' LOOP FETCH cur_ into c; EXIT WHEN cur_%NOTFOUND; pipe row (C) ; END LOOP; CLOSE cur_; return; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.08.2021, 11:18
|
|||
---|---|---|---|
объектные типы или packages |
|||
#18+
Хороший человек rtyts, используем Object type, когда некий код используется в нескольких отчетах, которые имеют различные условия выбора. Удобно сопровождать, меняешь только запрос в функции. Создаем Object type и table type пишем функцию заполнения Object type и обращаемся, примерно таким образом: select * from table(f_func(par1, par2)). ф-я может имеет вид типа Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Для оформления кода используйте, пожалуйста, тэг SRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.08.2021, 12:41
|
|||
---|---|---|---|
|
|||
объектные типы или packages |
|||
#18+
Хороший человек ф-я может имеет вид типа Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.08.2021, 13:07
|
|||
---|---|---|---|
|
|||
объектные типы или packages |
|||
#18+
andrey_anonymous, Код: sql 1.
- использовать bind variables вместо конкатенации не подойдет, если par2 будет например иметь значения ' v1 = 10'. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.08.2021, 13:38
|
|||
---|---|---|---|
|
|||
объектные типы или packages |
|||
#18+
А это уже SQL injection. От которой бинды как раз и защищают. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.08.2021, 10:45
|
|||
---|---|---|---|
|
|||
объектные типы или packages |
|||
#18+
Хороший человек если par2 будет например иметь значения ' v1 = 10'. А если par2 будет иметь значение ' 1=0 union all select object_type(secret1,secret2,secret3) from secret_data' то что Вы скажете потом безопасникам? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2021, 12:21
|
|||
---|---|---|---|
объектные типы или packages |
|||
#18+
Я в одном проекте такое на объектах намутил: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Это формирование текста, где каждый метод add_step_info(), append_item(), tab(), cr() добавляет в текст соответствующую строку и возвращает новый объект. Не очень эффективно, но выглядит прикольно. В другом проекте - загружаю данные из EXCEL, формируя объект, а в конструкторе сразу вычисляю по текстовым полям значения из справочников. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2021, 18:35
|
|||
---|---|---|---|
объектные типы или packages |
|||
#18+
Sah Я в одном проекте такое на объектах намутил: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Это формирование текста, где каждый метод add_step_info(), append_item(), tab(), cr() добавляет в текст соответствующую строку и возвращает новый объект. Не очень эффективно, но выглядит прикольно. В другом проекте - загружаю данные из EXCEL, формируя объект, а в конструкторе сразу вычисляю по текстовым полям значения из справочников. Как насчет сопровождения такого кода другими разработчиками и тестерами? Тоже "Не очень эффективно, но выглядит прикольно?" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.09.2021, 10:34
|
|||
---|---|---|---|
объектные типы или packages |
|||
#18+
Азм есть один во всех ипостасях. Что тут сопровождать? Клиентский код гораздо лучше чем Код: plsql 1.
. А в объект можно один раз слазить, посмотреть, как реализовано, забыть и пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%D0%B3%D0%BE%D0%BE%D0%BE%D1%81%D1%82%D1%8C&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 440ms |
total: | 723ms |
0 / 0 |