|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Коллеги, подскажите пожалуйста, есть ли возможность в области %SYS сделать запрос SQL с использованием функции (метод класса с SqlProc) из области SAMPLES? Зачем? - генерю отчет из базы аудита, где из EventData (инфа о событии) хочу вытащить нужную инфу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 17:16 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, Без проблем. Просто меняете область через команду Код: sql 1.
после чего попадаете в новую область = SAMPLES в ней запускаете код на выполнение функции (метод класса с SqlProc) а затем делаете возврат через тот же ZN ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 17:41 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
zn "SAMPLES" запуск функции (метод класса с SqlProc) zn "%SYS" Обратный возврат в область SYS ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 17:43 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Только не забудьте сохранить промежуточные данные перед сменой областей. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 17:47 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
О-О-О, не подходит. Выше решение тоже самое, что забрать итоги запроса из %SYS и обработать их в SAMPLES. Мне нужно именно вызвать функцию из другой области, ибо делать свою функцию в %SYS нет желания (придется помнить об этом при каждой новой инсталляции) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 17:53 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 17:54 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
doublefint, поясню: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Мне нужно вычисляемое поле в результате запроса по сути ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 18:05 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, смысл в том, чтобы группировку, вычисление средних значений взвалить на SQL (она не отображена в запросе выше), а не париться с этим самому перебором результатов ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 18:26 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakutКоллеги, подскажите пожалуйста, есть ли возможность в области %SYS сделать запрос SQL с использованием функции (метод класса с SqlProc) из области SAMPLES? Зачем? - генерю отчет из базы аудита, где из EventData (инфа о событии) хочу вытащить нужную инфу. Можно в определении класса сказать где лежат данные, тогда будет их брать оттуда. Или сделать второй класс - копию для такого доступа. http://thedarkaugust.blogspot.ru/2016/04/cache_64.html ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 20:30 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2017, 15:16 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, Пришлось как то сделать нечно похожее, и быстро, единственное, что придумалось - я просто смапил класс той таблицы, что мне нужна в свою область, и работал с ним как с "родным". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2017, 15:45 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Коллеги, отвечаю на свой вопрос: В запросе области %SYS нельзя вызвать функцию из другой области. Обращаю ваше внимание - функцию в запросе. Пробовал выполнить такой запрос в портале в области %SYS: Код: sql 1. 2. 3. 4.
Портал выдал ошибку: Поддержка вызова внешних функций запрещена. Замапить %SYS.Audit в свою область тоже не получится - портал просто не предлагает в выпадающем списке нужную таблицу. Итого остается мапинг своего пакета в %SYS, что мне не совсем подошло по регламентным соображениям. Спасибо всем за помощь в этом посте. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 12:22 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakutПортал выдал ошибку: Поддержка вызова внешних функций запрещена. Вызов внешних функций можно разрешить в портале управления... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 15:41 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut Код: sql 1.
Это что за синтаксис такой: Классический вариант вызова такой Код: javascript 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 15:43 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, System > Configuration > General SQL Settings Allow Extrinsic Functions in SQL Statements = Yes При существовании в области MYNS программы (mac, int) MyRoutine: Код: sql 1. 2.
sql запрос для вызова функции из другой области (%SYS) примет вид: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 15:48 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakutВ запросе области %SYS нельзя вызвать функцию из другой области Но можно сделать наоборот: в области с функцией обратится к данным в области %SYS вынести класс с функцией в область %All ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 16:57 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
doublefint, спасибо за рекомендацию отображения глобали CacheAuditD, без этого ничего не получилось бы. Однако использовать "*" (звездочку) после SELECT уже нельзя. (Сходу вопрос - является ли отображения только D-глобали достаточным и корректным для возможности делать запросы к %SYS.Audit?) SQL-запросы из своей области к области %SYS заработали, стало возможным использовать функции в самом запросе. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 11:02 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, Как я помню, если есть глобаль с индексами, типа CacheAudit I , то ее тоже надо, иначе запросы не будут работать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 16:30 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Mammonth, А как же они тогда сейчас работают? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 17:14 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakut, Ну могу лишь предположить, что без индексов оно перебором всех строк работает? Черт его знает, как там оно устроено :) Обнаружив наличие индекса в определении класса и его отсутствие "по факту" движок может предположить что их "еще нет, но будут" и выполняет запрос перебором всех строк. Хотя по хорошему это может быть индикатором ситуации "все-плохо-база-упала-мы-все-умрем" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 18:18 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakutMammonth, А как же они тогда сейчас работают? ))) Вон как GUI в приме работал гораздо сильнее загадка :)) и ничего, работало же ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 18:18 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
drakutdoublefint, спасибо за рекомендацию отображения глобали CacheAuditD, без этого ничего не получилось бы. Однако использовать "*" (звездочку) после SELECT уже нельзя. (Сходу вопрос - является ли отображения только D-глобали достаточным и корректным для возможности делать запросы к %SYS.Audit?) SQL-запросы из своей области к области %SYS заработали, стало возможным использовать функции в самом запросе. Спасибо! А вдруг вы не видели этот проект ? Аналитика по всему что есть в аудите с визуализацией в DeepSee. Автор тут же в этом треде ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 18:40 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Mammonthdrakut, Ну могу лишь предположить, что без индексов оно перебором всех строк работает? Черт его знает, как там оно устроено :) Обнаружив наличие индекса в определении класса и его отсутствие "по факту" движок может предположить что их "еще нет, но будут" и выполняет запрос перебором всех строк. Хотя по хорошему это может быть индикатором ситуации "все-плохо-база-упала-мы-все-умрем" :) Запрос компилируется без учета данных в базе, только на основе метаданных. В зависимости от условий, сортировки, селективностей, списка индексов и выбираемых полей, план запроса может использовать *D глобал, *I глобал или оба. Если у вас все работает только с D глобалом - это не очень хорошо, потому что со временем это будет очень медленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2017, 20:46 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Упс, убежало раньше времени ( не везде надо нажимать ctrl+enter ) drakutиспользовать "*" (звездочку) после SELECT И я об этом предупреждал: Код: vbnet 1. 2.
drakutявляется ли отображения только D-глобали достаточным и корректным Подсистема Аудита достаточно специфична, продолжает развиваться ISC, надо смотреть исходники класса В идеале, сделать свой класс-проекцию на необходимые поля, структура глобала более-менее стабильна. * Вы же помните, что по умолчанию запущена задача, которая чистит записи аудита старше 2(?) месяцев? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2017, 18:20 |
|
Вызов функции SQL из другой области
|
|||
---|---|---|---|
#18+
Блок А.Н.все работает только с D глобалом Удивительно много системных классов работает только с одной глобалью. Тот же %SYS.Audit пару лет назад не использовал индексную глобаль, сейчас не уверен. Пакет %Dictionary, проекции на ^SYS... Когда-то разбирал код выполнения "запросов" от полюбившегося многим Zen.TablePane, там "интересно" - свои "индексы" на лету для каждого шороха на каждом клиенте, с неким подобием кеширования. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2017, 18:33 |
|
|
start [/forum/topic.php?fid=39&msg=39398631&tid=1556378]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 171ms |
0 / 0 |