|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Здравствуйте Досталась небольшая процедура на PL/SQL которую необходимо дёргать из джавы. Для простоты дёрганья яя предлоил прекрасное решение: переписать поцедуру в функцю и возвращать рефкурсор. И всё мы переписали и были очень счастливы что оракл такой классный. Пока не обнаружилось, что функция иногда делает INSERT. Оракл, сказал,что инсерт из селекта делать нелья. Нельзя из селекта создавать и удалять таблицы. Апдейтить не пробовал, но уверен. что тоже нельзя. Если бы не удалёнка меня бы уже побили точно, потому что все эти операции функция наша делать скоро захочет(( Вот Подскажите, пожалуйста, можно ли как-то сей запрет обойти? может возможно запустить из функции кусок SQL в новом стейтменте? Или вруг есть средства удалённого вызова ХП которые можно задействовать локально из PL/SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 19:47 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Перепишите обратно в процедуру, ref cursor джаве возвращайте через out-параметр. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 19:51 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Спасибо! Интересный вариант. Проблема в том, что с джавой тоже не всё так просто. SELECT очень бы здорово облегчил жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 20:10 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Sarin Спасибо! Интересный вариант. Проблема в том, что с джавой тоже не всё так просто. SELECT очень бы здорово облегчил жизнь. Что там такого сложного-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 20:17 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Но вообще запрет на DML в контексте SELECT носит концептуальный характер. Выполняя seleсt Вы вправе ожидать, что не измените/не испортите/не удалите данные - это жеж просто select. Обмануть можно автономной транзакцией, но это будет скорее из разряда самообманов и породит больше проблем чем решит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 20:22 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Sarin Здравствуйте Досталась небольшая процедура на PL/SQL которую необходимо дёргать из джавы. Для простоты дёрганья яя предлоил прекрасное решение: переписать поцедуру в функцю и возвращать рефкурсор. И всё мы переписали и были очень счастливы что оракл такой классный. Пока не обнаружилось, что функция иногда делает INSERT. Оракл, сказал,что инсерт из селекта делать нелья. Функцию с INSERT нельзя вызывать из SQL предложения. Так что похоже функция вызывается через SELECT функция FROM DUAL; Вызывай нормально через PL/SQL: Calling PL/SQL from Java . SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 20:29 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Ну да, я так и понял, что это что-то очень концептуальное. Выов функции делется так: Код: plsql 1.
написать вызов ХП из джавы не проблема. только до джавы этой добраться надо. а потом водрузить на сервер проведя чере ревью, и два цикла тестирования )) но такой вариант рассматривается а вот автономные транакции - интересная наводка. Большое спасибо! если они помогут, то о побочных эффектах можно не волноваться. После того как функция отработает хоть трава не расти. база всё равно перезаливаться будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 23:01 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Sarin Для простоты дёрганья яя предлоил прекрасное решение Сам себя не похвалишь - весь день ходишь как оплёванный. А главное, эту дикую конструкцию из костылей, поддерживающих сферического коня, больше никто и никогда не похвалит. Sarin Если бы не удалёнка меня бы уже побили точно Подскажите этим людям, что им позарез нужно нанять хотя бы одного компетентного разработчика. Хотя бы на то, чтобы бить по рукам энтузиастов и показывать адекватные решения. P.S. Или в качестве личной просьбы - выбросьте Оракл и возьмите что-нибудь, чего не жалко. Хоть MySQL, хоть Interbase, хоть любую другую замечательную СУБД для тех, чьи таланты лежат в далёких от БД областях. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2020, 02:39 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Sarin Здравствуйте Подскажите, пожалуйста, можно ли как-то сей запрет обойти? может возможно запустить из функции кусок SQL в новом стейтменте? Или вруг есть средства удалённого вызова ХП которые можно задействовать локально из PL/SQL? Тут есть варианты. 1) Переписать всё на Java 2) Вернуть, всё как было ИМХО я бы выбрал 1-й вариант. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2020, 04:16 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
с автономными транзакциями заработало Большое спасибо! А найти компетентного специалиста, заменить оракл на что-то, переписать всё на джаве и завязать, наконец-то, с IT - это всё впланах есть, но во временные рамки проекта решить не получится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2020, 10:34 |
|
INSERT из SELECT'а
|
|||
---|---|---|---|
#18+
Sarin с автономными транзакциями заработало Большое спасибо! А найти компетентного специалиста, заменить оракл на что-то, переписать всё на джаве и завязать, наконец-то, с IT - это всё впланах есть, но во временные рамки проекта решить не получится :) Sarinнаписать вызов ХП из джавы не проблема. только до джавы этой добраться надо. а потом водрузить на сервер проведя чере ревью, и два цикла тестирования )) но такой вариант рассматривается Шикарное у Вас review и тестирование... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2020, 11:10 |
|
|
start [/forum/topic.php?fid=52&fpage=31&tid=1880658]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 450ms |
0 / 0 |