|
|
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
Коллеги добрый день! Просветите меня пожалуйста по хранимым процедурам и функциям. Есть ли возможность передать в хранимую PL\SQL процедуру сложную структуру данных например List, Map или т.д ? Например есть необходимомть сохранять вопрос и его возможные варианты ответов, они будут сохранены в две таблицы. Эта структура на Java стороне легко описывается стандартными коллекциями или Json как угодно. Мне показалось что здесь уместно создать хранимую процедуру передать ей данные и пусть она уже пишет как надо. Вмсто двух вызовов JDBC драйвера со стороны Java у меня будет один. Однако я столкнулся с тем, что непонимаю как передать сложную структуру данных. Вообще у меня на проекте вечный спор, нужны нам хранимые процедуры или нет. Одно из опасений это то, что хранимые процедуры усложням нам развертывание и обновление приложения. В этом плане насколько эти опасения оправданы? Ведь я так понимаю, что обновление хранимой процедуры это просто запуск SQL скрипта с CREATE OR REPLACE PROCEDURE ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 20:48 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010Однако я столкнулся с тем, что непонимаю как передать сложную структуру данных.Возможно имело смысл почитать JDBC Reference Information SQL and PL/SQL Mappings to Oracle and JDBC Types Потом ознакомиться с тем, что такое сериализация. Вполне себе подход может быть запаковать входные и выходные данные в XML (json). vlad2010Вообще у меня на проекте вечный спор, нужны нам хранимые процедуры или нет.Вообще если б у вас на проекте пришло осознание, что Оракл не только черный ящик для хранения данных, то появились бы новые мысли. А то напроектируют такие махровые джависты и прочие ORMщики немасштабируемое говно и потом пытаются нанять ораклиста который им уберет bottlenecks без основательного рефакторинга. При таком понимании возникает подозрение что оракл нелицензионный, потому что ну нельзя платить за него такие деньги без понимание зачем. Есть же myslq, например. А, да, может просто гос контора и откаты. Ничего личного, просто все это очень нелепо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2017, 22:06 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
Да нет все лицензионное будьте уверены. Долго объяснять , просто лицензий достаточно. Но да, делать это сейчас приходится даже не джависту, а с++ нику. Правильно ли я понимаю что перенос логики на сторону oracle в разумных пределах оправдан? Вы просто поймите ситуацию , это именно я рассказал людям о том, что вообще есть такая вещь как хранимые процедуры. Тут SQL запросы по java коду размазаны и все нормально. Я ведь чувствую уже аргументы моих коллег и против. Допустим "а что мы будем делать если захотим перенести приложение с oracle на что то другое? с pl/sql логикой в процедурах зависнем". Вообщем это уже демагогия пошла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 01:51 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010, Можно было бы о чем-то говорить, если б ты ознакомился с вопросом и утверждал что с тем согласен, а с тем не очень. Погугли для начала business logic database vs application sql vs orm vlad2010а что мы будем делать если захотим перенести приложение с oracle на что то другое?Вы с удивлением можете обнаружить, что блокирование в разных СУБД организовано по разному и ваше приложение вообще может перестать корректно работать. Почитай "Том Кайт Оракл для профессионалов" там в самом начале познавательные истории. А что вы будете делать если захотите перенести приложение на C++ или, скажем, C#? Можно же пойти еще на уровень абстракции выше и писать на DSL, который будет генерировать код на соответствующем языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 14:00 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopПогугли для начала business logic database vs application sql vs orm я погуглил почти везде пишут что бизнес-логика в базе это плохо но вот вопрос, а где начинается бизнес-логика ? a + b это уже бизнес-логика или еще нет ? (а также group by, where, etc) по факту того что видел на практике, части логики суют по разным местам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 15:24 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
grokdbms_photoshopПогугли для начала business logic database vs application sql vs orm я погуглил почти везде пишут что бизнес-логика в базе это плохо но вот вопрос, а где начинается бизнес-логика ? a + b это уже бизнес-логика или еще нет ? (а также group by, where, etc) по факту того что видел на практике, части логики суют по разным местам на одной и той же верёвке можно как повеситься, так и бельё сушить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 16:07 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
grokя погуглил почти везде пишут что бизнес-логика в базе это плохоЯ подразумевал, что когда человек гуглит он еще думает. Забыл, что это верно не только лишь не для всех. grokно вот вопрос, а где начинается бизнес-логика ?Теперь погугли "бизнес-логика". Только не стоит гуглить "бизнес" и логика "отдельно". Выше вероятность прийти к неверным выводам. grokпо факту того что видел на практике, части логики суют по разным местамЗаглянул в твои темы, было бы сильно удивительно если бы ты работал, где на практике применяют толковые подходы. Вот это было трогательно Проблема саморазвития программиста . Респект за искренность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2017, 17:55 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
grokя погуглил почти везде пишут что бизнес-логика в базе это плохо Тебя обманули маркетологи, формирующие предложения на перенос бизнес-логики из СУБД на AS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2017, 10:50 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
Хорошо,а такой вопрос еще Я так понял что вернуть из PL/SQL функции можно строку длиной 4000 байт т.е это максимальная длина VARCHAR. Получается мой json должен вписываться в это ограничение? Как то маловато получается. Никак нельзя обойти это ограничение? Интересует Oracle 11g 11.2.0.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2017, 21:03 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010, Ты оказался слишком ленив, чтоб даже сходить по ссылкам, которые я для тебя старательно готовил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2017, 21:39 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Позволю себе не согласиться. Я видел что можно вернуть пользовательский тип. Можно использовать эти типы при создании таблиц например CREATE TABLE employee_tab OF employee_typ; Проблема в том что мне надо вернуть или передать большой список из структур типа ( псевдокод ) Код: java 1. 2. 3. 4. 5. где Код: java 1. 2. 3. 4. 5. Я понимаючто для вас это очевидные вещи видимо, но поверьте они очевидны не всем. PL/SQL совсем не user friendly язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 00:33 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010передать большойПередавай за несколько вызовов процедур со скалярными параметрами, developer friendly ты наш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 00:54 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
Действия трансов, спасибо, если получать эти данные двумя вызовами то теряется теряется весь смысл писать хранимую процедуру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 01:54 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopvlad2010, Можно же пойти еще на уровень абстракции выше и писать на DSL, который будет генерировать код на соответствующем языке. Вот спасибо, заставили почитать про DSL. Но одним из примеров называют и SQL, и даже Visual Basic, и даже Excel Macro Language.... http://cs448h.stanford.edu/DSEL-Little.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 08:38 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010Проблема в том что мне надо вернуть или передать большой список из структур типа ( псевдокод ) Код: java 1. 2. 3. 4. 5. где Код: java 1. 2. 3. 4. 5. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 09:22 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010В этом плане насколько эти опасения оправданы? Ведь я так понимаю, что обновление хранимой процедуры это просто запуск SQL скрипта с CREATE OR REPLACE PROCEDURE ? Пользовательские типы в этом отношении еще страшнее, у них нет replace. Их надо либо альтерить теряя идемпотентнность скрипта развертывания, либо пересоздавать через drop/create, теряя гранты. PS запятые забыл расставить в коде выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 09:32 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
юзерфрендельПользовательские типы в этом отношении еще страшнее, у них нет replace.Либо я не понимаю, что такое пользовательский тип, либо не понимаю о каком replace идет речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 10:02 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
[quot AmKad]юзерфрендельне понимаю о каком replace идет речь.Афтор кагбэ намекает на "CREATE OR REPLACE" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 10:44 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
--Eugene--Афтор кагбэ намекает на "CREATE OR REPLACE"Ну вот и я понимаю, почему он говорит, что нет кляузы replace. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 10:47 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
AmKadНу вот и я не понимаю, почему он говорит, что нет кляузы replace. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 10:48 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
grokя погуглил почти везде пишут что бизнес-логика в базе это плохо Ты, когда читал, учитывал, что 95% людей на земле -- идиоты? Просто этим людям примерно лет 50 назад интернет ещё в руки дали. Ну, вдруг ты не знал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 18:37 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010Есть ли возможность передать в хранимую PL\SQL процедуру сложную структуру данных например List, Map или т.д ? Например есть необходимомть сохранять вопрос и его возможные варианты ответов, они будут сохранены в две таблицы. На всякий случай, если ещё проблему не решил... Можно ещё сделать достаточно легко и безболезненно след. образом: 0) записать твои данные в таблицу, сериализовав их в строки. и задав им один общий идентификатор (типа пакет обработки #x) 1) вызвать процедуру, передать ей этот идентификатор. 2) всё там обработать и вернуть что надо. 3) данные стереть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 18:41 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
юзерфредель, вот за это большое спасибо. лист это таблица, конечно я не думал в таком ключе! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2017, 00:33 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
MasterZiv, сначала все таки попробую с пользовательским типом, т.к мне равно требуется как записывать так и читать эти типы из базы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2017, 00:35 |
|
||
|
Хранимые процедуры, сложные структуры данных на вход
|
|||
|---|---|---|---|
|
#18+
vlad2010, В Оракле для передачи сложных структурированных данных существует специальный тип колонок таблиц XMLTYPE. Там тебе и парсеры и валидация, API для XML<=>SQL туда и обратно. Чего еще надо заморачиваться с какими-то пользовательскими типами? Как сказали там гемор с поддержкой изменений типов, зависимости в пакетах и процедурах. И DML там запускать довольно не тривиально на таблицах с пользовательсики типами и коллекциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2017, 01:10 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39527371&tid=1885195]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
398ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 732ms |

| 0 / 0 |
