|
|
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Имею Java класс Код: javascript 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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. Имею подключение к типу Oracle и заполнение данными Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Выполнение Код: plsql 1. 2. 3. 4. 5. Результат в виде Код: plsql 1. 2. 3. 4. 5. 6. Вопрос следующий - при выполнении процедуры t.ad.GetExecute('execute') результат должен зафиксироваться Результат это this.total=this.city+' '+this.street; (в продуктиве расчет большой и сложный) И просто визуализироваться при следующих вызовах - это t.ad.GetCity('ggg') В случае с t.ad.GetTotal(t.ad.city) - делаю принуд. вызов exeCalc() Подскажите как правильно организовать Java класс и осуществить подключение к типу Oracle Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 17:44 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_X.... при выполнении процедуры t.ad.GetExecute('execute') результат должен зафиксироваться Результат это this.total=this.city+' '+this.street; (в продуктиве расчет большой и сложный) И просто визуализироваться при следующих вызовах .... Одно из двух 1) или я совершенно не понял, что Вы написали 2. или Вы совершенно не понимаете разницу между SQL командами SELECT и UPDATE IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:09 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
Перечитал еще раз, возможно, то что хотите, просто можно сделать вложенным запросом. Попытаться сделать метод execute который будет возвращать _ОБЪЕКТ_ во вложенном запросе, а уже во внешнем запросе, брать из него поля. Не знаю, можно ли так сделать. Но я бы в этом направлении думал. Т.е. как-то так: SELECT t.obj.getField1(), t.obj.getField2() .... FROM (SELECT execute( tt...) as obj FROM tt ) t IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:19 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_X, Смотрите как использовать MEMBER FUNCTION в объектах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 20:02 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Вы правы все это можно сделать SQL, но архитектурно мне нужна именно java реализация (java - библиотека используется в других сервисах) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 20:24 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
ora601HOME_X, Смотрите как использовать MEMBER FUNCTION в объектах. Может такая декларация не очень нужна.... Суть задачи Взять фиксир. ОБЯЗАТ. набор полей обработать JAVA классом вернуть эти поля + набор НЕ ОБЯЗАТ. результат. полей, которые должны в запросе вызываться по требованию Т.е. выполненный скаляр (совет - Leonid Kudryavtsev), не совсем понимаю как осуществить возврат такого набора, и как заставить просчитать итог в классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 20:36 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_XВзять фиксир. ОБЯЗАТ. набор полей обработать JAVA классом вернуть эти поля В джаве класс не обрабатывает, это делают методы класса. Все обычно, по tutorial : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 21:09 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_XВзять фиксир. ОБЯЗАТ. набор полей Один (первый) тип/объект/класс Oracle HOME_Xобработать JAVA Просто функция или метод HOME_Xвернуть эти поля + набор НЕ ОБЯЗАТ. результат. полей, которые должны в запросе вызываться по требованию Другой (второй) тип/объект/класс Oracle HOME_Xне совсем понимаю как осуществить возврат такого набора, и как заставить просчитать итог в классе. Для PL/SQL 1. Возвращать тип/объект/класс Oracle 2, Pipelined function Для Java: 1. Дока https://docs.oracle.com/cd/B19306_01/java.102/b14187/chsix.htm в разделе Mapping Data Types уверяет, что Вы вполне можете передавать в Java-функцию Oracle Object. Т.е. проблем нет 2. Вроде только на PL/SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 21:55 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. [/quot] Такая реализация мне известна, а как вернуть несколько значений ? И как их представить в виде поля запроса (!!! не PL/SQL процедура !!!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 22:40 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevДля Java: 1. Дока https://docs.oracle.com/cd/B19306_01/java.102/b14187/chsix.htm в разделе Mapping Data Types уверяет, что Вы вполне Если посмотрите на первоначальный код, он аналогичен доке. Только где-то что-то упустил.... не могу понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 22:52 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_X Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Такая реализация мне известна, а как вернуть несколько значений ? И как их представить в виде поля запроса (!!! не PL/SQL процедура !!!)[/quot] Ну смотря что джава метод возвращает, если basic datatype то как показано выше, если тип - то принимаешь тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 22:54 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
ora601Ну смотря что джава метод возвращает, если basic datatype то как показано выше, если тип - то принимаешь тип. Мне бы хотелось получить следующей результат select A.*, MyType(A.F1,A.F2).F3 -- здесь мой Java код, но код должен выполниться один MyType(A.F1,A.F2).F4 -- раз (расчет замороченный), а возврат полей класса, MyType(A.F1,A.F2).F5 -- по желанию пользователя - одно поле или 25 полей .............................. MyType(A.F1,A.F2).F25 from (select 'A' F1 10 F2 from DUAL -- здесь сделал набивку параметров ) A Можите подправить первоначальный пример, (где я пролажал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:19 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_X, Мне бы хотелось получить следующей результат Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Можите подправить первоначальный пример, (где я пролажал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:21 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_XHOME_X, Мне бы хотелось получить следующей результат Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Можите подправить первоначальный пример, (где я пролажал) Не думаю, что можно сначало вызвать конструктор на эти параметры, а потом еще и получить какие то результаты через getXX. Как вариант можно передать параметры в метод getXX и Код: java 1. 2. 3. 4. Т.е. сделать тоже самое что и в конструкторе, а потом уже основные калькуляции. Но вообще велосипедно. Для начало поймите какое место Java занимает в Oracle (methods calls). А то может следующая тема будет как сделать DI в java class из бд Oracle :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 00:40 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
[quot ora601] Код: java 1. 2. 3. 4. Как вариант - приемлемо Хотелось бы выдержать условие единоразовое выполнение типа (скаляр) и потом вызов отдельных полей Типа так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 1. Пустой конструктор (для упрощения вызова) 2. Описание полей без их участия в конструкторе Как правильно описать тип в Oracle при этих пунктах ? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Можите подсказать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 18:45 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_XМожитеЕсли нужен вызов одного метода, незачем его реализовывать как метод объекта, создаваемого конструктором. Статический метод класса опубликованный как функция. И, чем сношать туда-сюда параметры по каждой строчке, эффективнее может быть передать массив и отпипелинить результат обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 19:27 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
-2-и отпипелинить результат Вот этот момент мне не очень нравится, с остальным согласен Чем можно заменить pipelined ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 20:47 |
|
||
|
Подключение Java класса в типу Oracle
|
|||
|---|---|---|---|
|
#18+
HOME_X, Решение следующее Java - class Код: java 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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. Описание типа Oracle Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вызов Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Вызов типа и соответственно расчет единоразовый - проверяно !!! Все спасибо !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2016, 10:09 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=131&tid=1884681]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 383ms |

| 0 / 0 |
