|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
Доброго дня! Informix 12.10 Есть ли какай нибудь способ получить значение глобальной переменной объявленной и проинициализированной в ХП на SPL так , что бы не писать для этого специальную ХП ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 12:22 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
cpr, получить где? На клиенте? Тогда нет :) Это же переменные ХП :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 16:33 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
АнатоЛой, Получить запросом к серверу. Чем то типа dbinfo() или запросом к SMI. Имеется в виду альтернатива написанию SP, которая вернет это значение глобальной переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 17:33 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
cpr, я понял. Опуская кучу размышлений на эту тему: в доке упоминаний не видел. Можно попробовать выкрутиться через EXECUTE IMMEDIATE, но очень вероятно, что: 1) нарвёшься на ограничения; или 2) производительность/влияние на работу сервака будет некудышнее. Напоследок: зачем оно тебе надо? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 20:39 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
АнатоЛойНапоследок: зачем оно тебе надо? :) Это кмк из разряда - лучше неделю потренироваться, а потом за 5 минут долететь. )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 21:18 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
АнатоЛойcpr, я понял. Опуская кучу размышлений на эту тему: в доке упоминаний не видел. Можно попробовать выкрутиться через EXECUTE IMMEDIATE, но очень вероятно, что: 1) нарвёшься на ограничения; или 2) производительность/влияние на работу сервака будет некудышнее. Напоследок: зачем оно тебе надо? :) Проштудировал ноледж-центр - тоже ничего похожего. Придется динамически создавать процедуру, которая вернет значение глобальной переменной. Надобность довольно экзотическая. Вкратце - задача связана с автоматизацией функционального тестирования. Во время прогона теста в определенных точках сценария тестирования для организации проверки контрольных значений надо получить значения глобальных переменных. Т.к. ХП очень много и глобальных переменных еще больше, то хотелось избежать создания специальных ХП для получения состояния глобальных переменных в SPL-процедурах и функциях. Но похоже другого пути не видно. Т.к. читать шаред-память напрямую нереально. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:33 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
cprВо время прогона теста в определенных точках сценария тестирования для организации проверки контрольных значений надо получить значения глобальных переменных. Подозреваю, что в одном конкретном тесте в одном месте нужных значений глобальных переменных не больше 2-4. Нет? [quot cpr] Т.к. ХП очень много и глобальных переменных еще больше, то хотелось избежать создания специальных ХП для получения состояния глобальных переменных в SPL-процедурах и функциях. cprНо похоже другого пути не видно. Безвыходных ситуаций не бывает. Динамический SQL с генерацией ХП всё-таки тут "так себе решение". Максимум: генерить им ХП по шаблону "CREATE PROCEDURE GetGVV_%GLOBAL_VAR_NAME%(....) RETURNING ...."; Вариант без динамического SQL: Напиши одну ХП: - объявление всех глобальных переменных; - возврат значений как тебе больше удобно. вариант А) ROW со всеми значениями; вариант Б) - создание временной таблицы ("столбцы переменная-значение" или "сколько переменных - столько и столбцов" (с перехватом ошибки при попытке создания, если уже создавалась); - сохранение значений переменных во временную таблицу. вариант В) по входному параметру (строка с именем переменной) возврат значения именно этой переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:02 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
Соори, сорвалось с кнопки. По поводу: cprХП очень много и глобальных переменных еще больше НА... ЗАЧЕМ? Наследство? Перепроектировать нельзя? Может лучше временные таблицы сессии использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:03 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
АнатоЛойПодозреваю, что в одном конкретном тесте в одном месте нужных значений глобальных переменных не больше 2-4. Нет? Так и есть даже меньше, поэтому сгенерить процедуру не проблема. А хотелось сделать красиво. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:18 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
АнатоЛойНаследство? Перепроектировать нельзя? Да собственно проблем никаких нет, все работает отлично. А после перехода на 12-й в будущее смотрим с оптимизмом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:44 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
cprАнатоЛойПодозреваю, что в одном конкретном тесте в одном месте нужных значений глобальных переменных не больше 2-4. Нет? Так и есть даже меньше, поэтому сгенерить процедуру не проблема. А хотелось сделать красиво. Красиво - это использовать "DEFINE GLOBAL <конкретная переменная>..." только в двух ХП: GetGV_<конкретная переменная> и SetGV_<конкретная переменная>. А во ВСЕХ остальных местах вызывать эти ХП. Тогда нет проблем: 1) с функ. тестированием; 2) с поиском мест где точно используется значение; 3) с поиском мест где точно изменяется значение; 4) с отслеживанием, что все места, где используется глобальная переменная, имеют одинаковое значение по умолчанию. :). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 16:06 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
cprА хотелось сделать красиво. Можно сгенерить такую процедуру за 6 шагов: Код: powershell 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 20:39 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
Поторопился, не учел, что определение переменных может встретиться в нескольких функциях Код: powershell 1. 2. 3. 4. 5. 6.
ну и есть еще вариант парсить sysprocedures ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 20:46 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
victor16, клёво! :) victor16и есть еще вариант парсить sysprocedures ключевое слово - парсить, поскольку вариант с grep тоже нужно усложнять через регулярные выражения - существует небольшая вероятность, что оператор DEFINE могли разнести по нескольким строкам, или на строку с DEFINE поместили какое-то "непотребство". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 21:45 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
АнатоЛойвариант с grep тоже нужно усложнять через регулярные выражения - существует небольшая вероятность, что оператор DEFINE могли разнести по нескольким строкам, или на строку с DEFINE поместили какое-то "непотребство". Согласен ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 07:59 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
victor16, Спасибо за подсказки. Скрипт впечатлил ;-) . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2015, 12:30 |
|
доступ к глобальной переменной ХП
|
|||
---|---|---|---|
#18+
cprАнатоЛойcpr, я понял. Опуская кучу размышлений на эту тему: в доке упоминаний не видел. Можно попробовать выкрутиться через EXECUTE IMMEDIATE, но очень вероятно, что: 1) нарвёшься на ограничения; или 2) производительность/влияние на работу сервака будет некудышнее. Напоследок: зачем оно тебе надо? :) Проштудировал ноледж-центр - тоже ничего похожего. Придется динамически создавать процедуру, которая вернет значение глобальной переменной. Надобность довольно экзотическая. Вкратце - задача связана с автоматизацией функционального тестирования. Во время прогона теста в определенных точках сценария тестирования для организации проверки контрольных значений надо получить значения глобальных переменных. Т.к. ХП очень много и глобальных переменных еще больше, то хотелось избежать создания специальных ХП для получения состояния глобальных переменных в SPL-процедурах и функциях. Но похоже другого пути не видно. Т.к. читать шаред-память напрямую нереально. http://www-01.ibm.com/support/knowledgecenter/SSGU8G_11.70.0/com.ibm.sqls.doc/ids_sqs_1903.htm You can use IBM® Database Add-Ins for Visual Studio to debug an Informix® SPL procedure. ... Debugging Informix SPL procedures in CLR applications While you develop Windows or ASP.NET applications in C# and Visual Basic, you can debug the Common Language Runtime (CLR) applications with IBM Database Add-Ins for Visual Studio. If the applications access Informix database server instances, you can debug the SPL procedures that are called from the applications while you debug the applications. The IBM Unified Debugger, which is the feature that you use to debug SPL procedures in C# and Visual Basic applications, is available for Informix, starting with version 11.70. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 02:53 |
|
|
start [/forum/topic.php?fid=44&msg=38958457&tid=1606875]: |
0ms |
get settings: |
25ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
370ms |
get tp. blocked users: |
2ms |
others: | 393ms |
total: | 872ms |
0 / 0 |