powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Изменить значения в массиве типа java.sql.Array[]
8 сообщений из 8, страница 1 из 1
Изменить значения в массиве типа java.sql.Array[]
    #39394016
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

- База Oracle,
- в ней java-функцию
- один из параметров которой тип java.sql.Array[]

Передаваемый примитивный тип известен = Numeric (Double)
Длина массива статична, задана из базы = функцией не меняется

Каким образом этой функции можно изменить содержание
элементов массива и вернуть ИЗМЕНЕННЫЕ элементы обратно
в базу.

Основное условие функция ИЗНУТРИ не должна ссылаться на
объекты базы, общение с базой ведется только через параметры
Никаких Connection this внутри функции не должно быть

Буду благодарен за пример
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394084
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде, в Java, гурами-ООП считается, что иммутебле типы - наше все... Т.ч., боюсь, Вы слишком многого от современного ООП языка программирования хотите )))
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394122
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevВроде, в Java, гурами-ООП считается, что иммутебле типы - наше все... Т.ч., боюсь, Вы слишком многого от современного ООП языка программирования хотите )))

Понял может здесь sql.Array и не нужен и ставить на него не стоит

Вариант один (задача более общая)
- java функцию передали массив, изменили его вернули обратно, база приняла его трансформировала в table
Массив статичен, тип элементов известен, разве невозможен разбор по указателям ( Object ) и запись данных непосредственно
в ячейки памяти ?

Вариант два
- как выяснить внедрена ли функция в базу Oracle
- как создать array в базе , пробывал через Connection.createArrayOf

Не могли бы черкнуть пример кода.
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394155
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XМассив статичен, тип элементов известен, разве невозможен разбор по указателям ( Object ) и запись данных непосредственно в ячейки памяти ?

Не очень понял.
Если тип элементов - обычные Java, и массив - это массив или коллекция (например ArrayList) обычной Java ==> проблем нет.

HOME_XВариант два
- как выяснить внедрена ли функция в базу Oracle

Опять таки не понял, нафига.
Объявления функции, как и интерфейс - вещь ... [как бы это ООПобразно выразится]... соверщенно полиморфичная. Забудте про SQL, передавайте данные в нормальном/обычном виде. Тогда будет пофиг, в каком контексте работает фукнция. IMHO & AFAIK

А собственно для работы в базе/Jsp/JavaBean/Jar - свой код. Не надо мешать технические детали и бизнес логику в одном месте. IMHO & AFAIK. Вроде вещь стандартная. Называется "процедурное программирование", придумано годах в 50-х прошлого (XX) века.

HOME_X- как создать array в базе , пробывал через Connection.createArrayOf

Не могли бы черкнуть пример кода.
Сейчас ни развернутого Oracle ни даже Java под рукой нет.
По f...ing manual - вроде же все просто:
https://docs.oracle.com/javase/tutorial/jdbc/basics/array.html

С Java Stored Procedures - я не уверен, но вроде по доке тоже должно "взлететь":
https://docs.oracle.com/cd/B19306_01/java.102/b14187/chsix.htm
В пункте Setting Parameter Modes описывается, что можно парметры принимать как IN / OUT. Но не очень понятно, можно ли на Java Stored Procedures изобразить NOCOPY
В пункте Mapping Data Types массивы, да и все прочие типы, вполне себе упомянуты

HOME_Xобщение с базой ведется только через параметры
Никаких Connection внутри функции не должно быть

Без Connection не обойтись. Т.к. он требуется при создании (модификации) PL/SQL объектов. AFAIK.

Если нужно без Connection - то не использовать java.sql.Array, Datum и прочее. Использовать чисто Java-типы. А всю "специфику" пускай разруливает caller. IMHO & AFAIK
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394413
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XКаким образом этой функции можно изменить содержание
элементов массива и вернуть ИЗМЕНЕННЫЕ элементы обратно
в базу.
Так это - наверное через возвращаемое функцией значение. А его уже в Базе запросом назад в update. Как-то так функция чего-то возвращает. В принципе можно запрос и изнутри функции отправить, но Вы же не хотите знать структуру базы.
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394618
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевТак это - наверное через возвращаемое функцией значение. А его уже в Базе запросом назад в update. Как-то так функция чего-то возвращает. В принципе можно запрос и изнутри функции отправить, но Вы же не хотите знать структуру базы.

Продуктив - это 10 массивов, которые необходимо изменить и вернуть
Изнутри функции видеть не хочу , противоречит заявленной архитектуре

Массивы - типы известны,размерность установлена, значение присвоены

Можно ли в функции узнать адреса элементов массива и писать прямо в ячейки ?
(java копирует значение при передаче в функцию)

Или может имеет смысл до создать массив ссылок на элементы и передавать адреса элементов
а в функции писать непосредственно в ячейки памяти

Как это сделать из под PL/SQL и простой Java

Заранее благодарен !
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394635
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Суть такая - это базовая расчетная функция работать должна
- в базе Oracle
- в win
- в web
интерфейсы ввода данных созданы в каждой среде отдельно

Отсюда внутренней связи с базой не должно быть, общение через параметры
java.sql.Array - использовал по учебнику -
Реально нужно вернуть набор измененных массивов

База это PL/SQL
create or replace type arrNbi is varray(2000) of Number

Win+Web это простая Java ...
...
Рейтинг: 0 / 0
Изменить значения в массиве типа java.sql.Array[]
    #39394640
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

На текущий момент реализация это слепленный текст, который после возврата в интерфейс парситься
Хотелось сделать красивее.

Может востребовать адреса ячеек и писать в них или передать адреса элементов массива в качестве параметров функции
и снова таки писать в них непосредственно ...

предложите Ваш вариант пожалуйста
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Изменить значения в массиве типа java.sql.Array[]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]