powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Передача параметра типа Table
17 сообщений из 17, страница 1 из 1
Передача параметра типа Table
    #38486487
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В блоке выборка через процедуру. Параметр один типа Table . По сути это in out associative array . Хочется с ним передать необходимые предикаты для выборки в процедуру.
Сделал так: создал переменную в формсовом пакете, установил ей нужные поля. Эту переменную указал в поле Value в Query Data Source Argument . Но в процедуре Count параметра 0...
В чем засада и вообще можно ли такое провернуть
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38486540
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДекабристСделал так: создал переменную в формсовом пакете....Эту переменную указал в поле...
AFAIK Мне кажется можно ссылаться только на элементы в блоке (:BLOCK.ITEM) и на глобальные переменные (:GLOBAL.Variable). мне кажется, что на переменные в пакетах ссылаться нельзя.
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38486558
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да Бог с ним на что ссылаться. Как тогда передать хоть шо-нибудь через эту таблицу?
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38486582
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делал блоки на триггерах. С блоками на процедурах вроде не сталкивался. Нужно в Инет (или в документации) искать примеры.

Почему обязательно блок на процедуре? Сделайте тупо блок на триггерах.
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38486612
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Религия контора не позволяет. Тут своя специфика хранить все в пакетах, как можно больше логики переносить на сервер для облегчения контроля.
Обычно к таблице прилагаются отдельными параметрами всё шо нужно.
Но когда его слишком много, тем более оно умещается в эту таблицу, которая будет возвращаться, то невольно задаешся вопросом: а почему тогда у нее тип обязательно должен быть in out
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38487048
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДекабристВ блоке выборка через процедуру. Параметр один типа Table . По сути это in out associative array . Хочется с ним передать необходимые предикаты для выборки в процедуру.
Сделал так: создал переменную в формсовом пакете, установил ей нужные поля. Эту переменную указал в поле Value в Query Data Source Argument . Но в процедуре Count параметра 0...
В чем засада и вообще можно ли такое провернуть

Точно не помню, но могу предположить, что в Query Data Source Argument можно использовать только поля блоков в формате BLOCK.ITEM или глобальные переменные - GLOBAL.var.
Но не "переменные в формсовых пакетах".
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38487168
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть выходит, что ни arrays, ни даже record вообще нельзя в процедуры передавать? Только простейшие типы?
На кой тогда оно вообще там вбито...
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38487776
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДекабристТо есть выходит, что ни arrays, ни даже record вообще нельзя в процедуры передавать? Только простейшие типы?
На кой тогда оно вообще там вбито...

Все можно. Просто объявление типов надо делать на в пакете на сервере, а в формсах ссылаться на этот тип
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38487828
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
efendiВсе можно. Просто объявление типов надо делать на в пакете на сервере, а в формсах ссылаться на этот типСделал в формсах subtype серверного типа. Как параметр типа table заполнить-то?
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38487912
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Декабрист,

Покажи код.
Есть сомнения, что мы об одном и том же говорим.
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38487939
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов, дык какой код показывать-то? Там все суть о Property Pelette как правильно указать настройки параметров.
Можно попробовать обрисовать картину еще раз, итак:
Есть блок. Выборка в блоке на процедуре. Процедура в пакете на сервере.
Для того чтобы мочь делать выборку в блок через процедуру нужно юзать параметр table или ref_cursor
Взял table . Хорошо. Указывают тип: что явное указание с серверного пакета, что указание типа объявленного в формсах(в фрмсах создан пакет)
как subtype того серверного типа ничего пока в моем видении не меняет.
Дальше. Поскольку параметр таблицы in out, то хочется в таблице передать предикаты, по ним селекнуть в серверном пакете и вернуть обратно только то что нужно
Собснно и всего-то
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38488048
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня подобный вопрос также когда-то возник. Но, попытавшись каким-то образом воздействовать на содержимое таблицы перед передачей на сервер в автогенерируемом триггере query-procedure, убедился, что триггер "автогенерируется" эффективно - затирая любые изменения :) Пришлось добавить в саму процедуру параметры для последующего ограничения выборки, со ссылками на айтемы другого блока. Вроде, работало адекватно. Сам лично больше предпочитаю забирать данные из view.
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38488931
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Декабрист,

Вот подробное описание того, как строить блок на процедурах.
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38489246
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда-то проводил измерения и, по _моему_ мнению и опыту, данная дока врет в следующих местах:

Код: sql
1.
2.
3.
4.
5.
6.
Basing a block on a stored procedure is an advanced operation to do the
following:
1. Reduce network traffic through array processing as the sql statements are
processed by the pl/sql engine on the server side.
...
What is a REF Cursor....


REF Cursor ЗНАЧИТЕЛЬНО увеличивает round-trip's между Forms & DB Server'ом

Forms 6i фетчил данные из REF Cursor'а по одной строке, тогда как из блока на таблице данные считываются сразу "пачкой". Примеры Oracle, которые делали вид, что считают Round trips, были написаны НЕ корректно. Они показывали якобы 1-2 round trip,а на самом деле их там было море.

Использование массивов для передачи информации в блок данных, лично мне кажется не очень здравой идеей с точки зрения универсальности и масштабирования. Что будет, если будет нужен блок на тысячи строк?

IMHO & AFAIK
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38489288
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может лучше воспользоваться pipeline-функцией?
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38491872
Декабрист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов Вот подробное описание того, как строить блок на процедурах.Хорошая статья. Так подробно и последовательно даже в хелпе не написано. Спасибо
Однако я понял, что из формсов в процедуру селекта ничего не передашь... досада

Leonid KudryavtsevИспользование массивов для передачи информации в блок данных, лично мне кажется не очень здравой идеей с точки зрения универсальности и масштабирования.
Что будет, если будет нужен блок на тысячи строк?Да как сказать! Когда я впервые увидел такой приемчик, мне он показался немного диковатым. Скорее с непривычки. Со временем я понял, что это просто метод "один из".
Вполне допускаю что он будет тормозным на больших объемах, я не знаю, не тестил. Хотя наверно изза этого я его у нашей конторе наблюдаю только для редактирования справочников.

Немного удивило использование транзакционных триггеров для insert/update, вместо тех же процедур. Ну это только если какие-то PRE computations надо делать перед отправкой, вполне гибко.

А вообще, что касается выбоки, остановилсо на том же методе что и APS. Здесь такие реализации по умолчанию. Но когда много параметров, то создавать их в процедуре как-то некошерно и внапряг.
...
Рейтинг: 0 / 0
Передача параметра типа Table
    #38491967
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще не очень понимаю смысла обертывать select в процедуры.

Блок на процедурах мы рассматривали, как универсальный подход для нашей систем. Но тогда работали в клиент-сервер (6i) и потеря перформанса на ref cursor'ах для нас была критичной. Т.ч. от такого подхода отказались. В результате большинство блоков делали Query по View - DML в table по первичному ключу

Блок на триггерах периодически приходилось использовать. Например когда данные не из БД, блок показывающий записи из внешнего текстового файла и т.д.
Декабрист..Немного удивило использование транзакционных триггеров для insert/update, вместо тех же процедур. Ну это только если какие-то PRE computations надо делать перед отправкой, вполне гибко...
Работал с OeBS, где все обновление на транзакционных триггерах. Меня это не удивляло, но сильно заебы..... 100500 раз писать совершенно тупые триггеры которые не несут никакого бизнес смысла. Я уж не говорю, что в ON-LOCK триггере сделать ошибку при copy-past вообще без проблем ))).

Ну... я еще могу понять view и instead of (не знаю, насколько это будет в forms работать). Но добровольно плодить кучу триггеров в блоке лично я бы не стал
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Передача параметра типа Table
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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