Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Существует ли возможность определить и использовать subj в ESQL (в частности в Message Broker Toolkit). В примерах встречается, например SET OutputRoot.XML.Test.Result[] = (SELECT T.Column1, T.Column2 FROM Database.USERTABLE AS T); или IF EXISTS(SELECT T.MYCOL FROM Database.MYTABLE) THEN ... или SET OutputRoot.XML.Testcase.Results[] = ( SELECT T.MYCOL FROM Database.MYTABLE); IF CARDINALITY (OutputRoot.XML.Testcase.Results[]) > 0 THEN ... но если мне не нужно помещять результаты SELECT в OutputRoot, а нужно только их проанализировать и внести нужные изменения в маршрутизацию/содержимое потока, то как этого достичь? Можно ли использовать что-то вроде DECLARE Cur Cursor; SET Cur = (SELECT T.MYCOL FROM Database.MYTABLE); IF EXISTS(Cur.MyCol) THEN ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 18:07 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Читать документацию и примеры. Можно сделать например так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Соответственно вместо SET можно использовать другие операторы. Вот не помню, SELECT INTO работает или нет. Надо будет завтра проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 18:28 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
ЗдОрово! Спасибо. Нашёл в примерах также SET Environment.Variables.Reservation[] = (SELECT ...); DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(Environment.Variables.*[]); WHILE I <= J DO ... //доступ к полям по синтаксису Environment.Variables.Reservation .CLASSTYPE; SET I = I + 1; END WHILE; А не посоветуете тогда какую документацию и примеры лучше посмотреть? Уже закопался в мегабайтных pdf файлах Message Broker Toolkit related, но нигде описания этих моментов не встречал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 18:39 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Штатная документация. Доступна как Information Center (кстати встроена в Message Broker Toolkit (Help)), так и как PDF-файлы. Смотреть здесь: http://www-306.ibm.com/software/integration/wbimessagebroker/library/ Там ссылки и на Information Center и на PDF-документацию. Очень полезны книжки Message Flows и ESQL. Аналогичные главы есть и в Information Center, с примерами или ссылками на примеры. Для поиска Information Center удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 09:24 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ссылку. Не знал. У меня некоторые PDF устаревшие в любом случае оказались а по ESQL аообще не было. Можно я еще вопрос тут задам? Не получается собственно соединение с БД восстановить. В ESQL скрипте видны Warnings типа Unresolvable database table reference "Database.tblEmployee". Перед этим 1) Создал ODBC источник данных N (в нём connect проходит нормально) 2) Использовал mqsisetdbparams для определения имени/пароля пользователя используемых для соединения брокера с БД. 3) У ComputeNode выставил N в качестве DataSource и в ESQL пишу типа DECLARE R ROW; SET R = (SELECT T.LoginName FROM Database.tblEmployee AS T WHERE T.EmployeeID=0); и после сохранения ESQL вижу вышеописанный Warning. Есть видимо какой-то тонкий момент, но я его пока не отлавливаю. Пытался создать Database Definition/Schema Definition, но Warning не уходит и flow не работает. Не подскажете чего я упустил? На всякий случай: OS - локальный WinXP, DB - MSSQL 2000 на удаленном WinXP (connect by IP), Message Broker Toolkit v6.0.2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 13:29 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Да, варианты SET R = THE (SELECT T.LOGINNAME FROM Database.TBLEMPLOYEE AS T WHERE T.EMPLOYEEID=0); SET R = THE (SELECT T.LOGINNAME FROM Database.N.TBLEMPLOYEE AS T WHERE T.EMPLOYEEID=0); т.е. с THE и без, UpperCase или нет, всё равно дают те же результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 14:33 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Источник данных создал системный (System DSN)? Я еще обычно указываю имя схемы, может это и не обязательно, не помню. Т.е. например вот так: Код: plaintext 1. 2. Чтобы исчезли предупреждения при разработке, нужно в проекте подключиться к этой базе и выполнить импорт используемых схем и таблиц в проект. Тогда и предупреждения исчезнут, и подсказки(Ctrl+Space) будут работать. А работать должно и с предупреждениями, если все правильно настроено. Выполнять Flow пробовал? Работает или дает ошибку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 14:45 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Чтоб я так разбирался... После добавления Database/Schema/Table Definitions (где всё, включая нужные поля, пришлось определять вручную) исчез Warning. Но Flow все равно не работает. Строка ESQL SET OutputRoot.XML.Data.LoginName = R.Data[1].LoginName; в отличии от SET OutputRoot.XML.Data.LoginName = 'LoginName'; приводит к тому, что в исходящем LoginName отсутствует. А как в проекте подключиться к базе и выполнить импорт используемых схем и таблиц в проект? Не нашел такого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 16:14 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
А без определения Database/Schema/Table Definitions поток вообще не работает. Подозреваю, что вываливается на этом SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 16:31 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Вау, заработала связка SET Environment.Variables = THE (SELECT T.LoginName FROM Database.tblEmployee AS T WHERE T.EmployeeID=0); SET OutputRoot.XML.Data.LoginName3 = Environment.Variables.LoginName; но предложенный ранее SET R.DATA[] = (SELECT T.LoginName FROM Database.tblEmployee AS T WHERE T.EmployeeID=0); SET OutputRoot.XML.Data.LoginName2 = R.Data[1].LoginName; не работает, т.е. видимо OutputRoot.XML.Data.LoginName2 = Null. Может где-то есть ошибка во всех этих скобках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 17:07 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Вопрос снимается. Если всё вводить case sensitive то работает SET R.DATA[] = SELECT T.LoginName FROM Database.tblEmployee AS T WHERE T.EmployeeID=0; SET OutputRoot.XML.Data.LoginName2 = R.DATA[1].LoginName; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 17:24 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Alexander_UA SET R.DATA[] = (SELECT T.LoginName FROM Database.tblEmployee AS T WHERE T.EmployeeID=0); SET OutputRoot.XML.Data.LoginName2 = R.Data[1].LoginName; не работает, т.е. видимо OutputRoot.XML.Data.LoginName2 = Null. Может где-то есть ошибка во всех этих скобках? Скобки в этом случае не нужны. Если тебе нужна только первая запись, то конструкция с THE правильнее. Если Flow вывалился по ошибке, то сообщение об ошибке ищи в Event Log-е Windows XP По поводу соединения с БД На проекте правой мышой, пункт Data Definition Files, там задашь соединение, потом подключайся и действуй (копируй в проект схемы и таблицы). Еще соединения можно увидеть если переключиться в перспективу "Data" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 17:34 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Ага, только у меня БД = MSSQL, а JDBC Driver для доступа к ней отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 19:06 |
|
||
|
Reference на результат SELECT в ESQL
|
|||
|---|---|---|---|
|
#18+
Драйверов JDBC для MS SQL несколько штук. Родной от MS вроде есть. И я как-то пользовался драйвером jTDS. Поищи. В крайнем случае можно воспользоваться JDBC-ODBC Дравером из комплекта JDK. Хотя забавно конечно, что Tookit работает через JDBC, а брокер через ODBC. Но так уж написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 10:40 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34578398&tid=1604534]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 378ms |

| 0 / 0 |
