|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
В блоке выборка через процедуру. Параметр один типа Table . По сути это in out associative array . Хочется с ним передать необходимые предикаты для выборки в процедуру. Сделал так: создал переменную в формсовом пакете, установил ей нужные поля. Эту переменную указал в поле Value в Query Data Source Argument . Но в процедуре Count параметра 0... В чем засада и вообще можно ли такое провернуть ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 19:15 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
ДекабристСделал так: создал переменную в формсовом пакете....Эту переменную указал в поле... AFAIK Мне кажется можно ссылаться только на элементы в блоке (:BLOCK.ITEM) и на глобальные переменные (:GLOBAL.Variable). мне кажется, что на переменные в пакетах ссылаться нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 19:49 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Да Бог с ним на что ссылаться. Как тогда передать хоть шо-нибудь через эту таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 19:59 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Я делал блоки на триггерах. С блоками на процедурах вроде не сталкивался. Нужно в Инет (или в документации) искать примеры. Почему обязательно блок на процедуре? Сделайте тупо блок на триггерах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 20:15 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Религия контора не позволяет. Тут своя специфика хранить все в пакетах, как можно больше логики переносить на сервер для облегчения контроля. Обычно к таблице прилагаются отдельными параметрами всё шо нужно. Но когда его слишком много, тем более оно умещается в эту таблицу, которая будет возвращаться, то невольно задаешся вопросом: а почему тогда у нее тип обязательно должен быть in out ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 20:37 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
ДекабристВ блоке выборка через процедуру. Параметр один типа Table . По сути это in out associative array . Хочется с ним передать необходимые предикаты для выборки в процедуру. Сделал так: создал переменную в формсовом пакете, установил ей нужные поля. Эту переменную указал в поле Value в Query Data Source Argument . Но в процедуре Count параметра 0... В чем засада и вообще можно ли такое провернуть Точно не помню, но могу предположить, что в Query Data Source Argument можно использовать только поля блоков в формате BLOCK.ITEM или глобальные переменные - GLOBAL.var. Но не "переменные в формсовых пакетах". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 11:14 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
То есть выходит, что ни arrays, ни даже record вообще нельзя в процедуры передавать? Только простейшие типы? На кой тогда оно вообще там вбито... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 12:14 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
ДекабристТо есть выходит, что ни arrays, ни даже record вообще нельзя в процедуры передавать? Только простейшие типы? На кой тогда оно вообще там вбито... Все можно. Просто объявление типов надо делать на в пакете на сервере, а в формсах ссылаться на этот тип ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 17:10 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
efendiВсе можно. Просто объявление типов надо делать на в пакете на сервере, а в формсах ссылаться на этот типСделал в формсах subtype серверного типа. Как параметр типа table заполнить-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 17:35 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Декабрист, Покажи код. Есть сомнения, что мы об одном и том же говорим. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 18:36 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Павел Лузанов, дык какой код показывать-то? Там все суть о Property Pelette как правильно указать настройки параметров. Можно попробовать обрисовать картину еще раз, итак: Есть блок. Выборка в блоке на процедуре. Процедура в пакете на сервере. Для того чтобы мочь делать выборку в блок через процедуру нужно юзать параметр table или ref_cursor Взял table . Хорошо. Указывают тип: что явное указание с серверного пакета, что указание типа объявленного в формсах(в фрмсах создан пакет) как subtype того серверного типа ничего пока в моем видении не меняет. Дальше. Поскольку параметр таблицы in out, то хочется в таблице передать предикаты, по ним селекнуть в серверном пакете и вернуть обратно только то что нужно Собснно и всего-то ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 18:58 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
У меня подобный вопрос также когда-то возник. Но, попытавшись каким-то образом воздействовать на содержимое таблицы перед передачей на сервер в автогенерируемом триггере query-procedure, убедился, что триггер "автогенерируется" эффективно - затирая любые изменения :) Пришлось добавить в саму процедуру параметры для последующего ограничения выборки, со ссылками на айтемы другого блока. Вроде, работало адекватно. Сам лично больше предпочитаю забирать данные из view. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 21:28 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Когда-то проводил измерения и, по _моему_ мнению и опыту, данная дока врет в следующих местах: Код: sql 1. 2. 3. 4. 5. 6.
REF Cursor ЗНАЧИТЕЛЬНО увеличивает round-trip's между Forms & DB Server'ом Forms 6i фетчил данные из REF Cursor'а по одной строке, тогда как из блока на таблице данные считываются сразу "пачкой". Примеры Oracle, которые делали вид, что считают Round trips, были написаны НЕ корректно. Они показывали якобы 1-2 round trip,а на самом деле их там было море. Использование массивов для передачи информации в блок данных, лично мне кажется не очень здравой идеей с точки зрения универсальности и масштабирования. Что будет, если будет нужен блок на тысячи строк? IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 17:13 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Может лучше воспользоваться pipeline-функцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 17:31 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Павел Лузанов Вот подробное описание того, как строить блок на процедурах.Хорошая статья. Так подробно и последовательно даже в хелпе не написано. Спасибо Однако я понял, что из формсов в процедуру селекта ничего не передашь... досада Leonid KudryavtsevИспользование массивов для передачи информации в блок данных, лично мне кажется не очень здравой идеей с точки зрения универсальности и масштабирования. Что будет, если будет нужен блок на тысячи строк?Да как сказать! Когда я впервые увидел такой приемчик, мне он показался немного диковатым. Скорее с непривычки. Со временем я понял, что это просто метод "один из". Вполне допускаю что он будет тормозным на больших объемах, я не знаю, не тестил. Хотя наверно изза этого я его у нашей конторе наблюдаю только для редактирования справочников. Немного удивило использование транзакционных триггеров для insert/update, вместо тех же процедур. Ну это только если какие-то PRE computations надо делать перед отправкой, вполне гибко. А вообще, что касается выбоки, остановилсо на том же методе что и APS. Здесь такие реализации по умолчанию. Но когда много параметров, то создавать их в процедуре как-то некошерно и внапряг. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2013, 14:47 |
|
Передача параметра типа Table
|
|||
---|---|---|---|
#18+
Я вообще не очень понимаю смысла обертывать select в процедуры. Блок на процедурах мы рассматривали, как универсальный подход для нашей систем. Но тогда работали в клиент-сервер (6i) и потеря перформанса на ref cursor'ах для нас была критичной. Т.ч. от такого подхода отказались. В результате большинство блоков делали Query по View - DML в table по первичному ключу Блок на триггерах периодически приходилось использовать. Например когда данные не из БД, блок показывающий записи из внешнего текстового файла и т.д. Декабрист..Немного удивило использование транзакционных триггеров для insert/update, вместо тех же процедур. Ну это только если какие-то PRE computations надо делать перед отправкой, вполне гибко... Работал с OeBS, где все обновление на транзакционных триггерах. Меня это не удивляло, но сильно заебы..... 100500 раз писать совершенно тупые триггеры которые не несут никакого бизнес смысла. Я уж не говорю, что в ON-LOCK триггере сделать ошибку при copy-past вообще без проблем ))). Ну... я еще могу понять view и instead of (не знаю, насколько это будет в forms работать). Но добровольно плодить кучу триггеров в блоке лично я бы не стал ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2013, 15:38 |
|
|
start [/forum/topic.php?fid=51&fpage=10&tid=1878253]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 385ms |
0 / 0 |