Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.03.2015, 18:31
|
|||
---|---|---|---|
|
|||
Вложенные запросы к SQL в Ensemble |
|||
#18+
Добрый день! Подскажите, пожалуйста, возможно ли реализовать выполнение 2-х запросов в бизнес-операции Ensemble при использовании одного адаптера EnsLib.SQL.OutboundAdapter? Т.е. я хочу реализовать что-то вроде этого: set query1="select ID from table" set sc=..Adapter.ExecuteQuery(.rs,query1) while rs.Next() { set id=rs.GetData(1) set query2="select xxx from table2 where idxxx="_id set sc=..Adapter.ExecuteQuery(.rs2,query2) while rs2.Next() { .... } }С настройками по умолчанию получаю ошибку: Код: plaintext
В VB, например, данная проблема решалась добавлением в строку соединения параметра "MultipleActiveResultSets=true" Есть ли что-то подобное в Ensemble? Или вопрос к драйверу ODBC? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2015, 13:37
|
|||
---|---|---|---|
|
|||
Вложенные запросы к SQL в Ensemble |
|||
#18+
AlexShiryaev, вопрос либо к драйверу, либо к SQL-шлюзу Cache (Ensemble). ИМХО, проще переписать запрос - это ведь обычное соединение таблиц, не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2015, 21:58
|
|||
---|---|---|---|
|
|||
Вложенные запросы к SQL в Ensemble |
|||
#18+
Alexey Maslov, Я привел этот пример для простоты понимания. На самом деле запросы намного сложнее. И не решаются обычным join. К тому же в качестве второго запроса может быть не select, а update. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2015, 15:16
|
|||
---|---|---|---|
|
|||
Вложенные запросы к SQL в Ensemble |
|||
#18+
Добрый день! Раз больше ответов нет, то видимо, действительно нельзя так использовать адаптер. Тогда другой вопрос. Т.к. в реале по первому запросу может быть много данных, то сохранять их в памяти не совсем хочется. Думаю, сохранять во временном глобале. Потом использовать при помощи $ORDER. В документации написано, что имя временного глобала должно начинаться на "CacheTempUser". А как правильно пользоваться временными глобалами в бизнес-операции, когда подразумевается возможность использования ее при PoolSize>1? Чтобы 2 разных инстанса "не мешали" друг другу. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2015, 15:22
|
|||
---|---|---|---|
Вложенные запросы к SQL в Ensemble |
|||
#18+
А может можно в один запрос всё собрать? Как вариант - сделать вторую операцию и в ней второй запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2015, 15:23
|
|||
---|---|---|---|
Вложенные запросы к SQL в Ensemble |
|||
#18+
Есть еще PrivateGlobals, когда этот глобал доступен только текущему процессу, тут к именованию нет особых требований Да и по CacheTempUser это лишь рекомендация, он может называться так, может или иначе, главное чтобы ни с чем не персекался и начинался на ^CacheTemp, чтобы попал в БД CACHETEMP, которая не журналируется. чтобы разные процессы могли писать в один глобал, первым индексом можно использовать $job. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2015, 16:54
|
|||
---|---|---|---|
Вложенные запросы к SQL в Ensemble |
|||
#18+
AlexShiryaevВ VB, например, данная проблема решалась добавлением в строку соединения параметра "MultipleActiveResultSets=true"
Как на это смотрит администратор MSSQL или он ещё не в курсе? Не проще ли будет написать хранимую процедуру в самой MSSQL, т.е. поближе к данным? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2015, 17:27
|
|||
---|---|---|---|
|
|||
Вложенные запросы к SQL в Ensemble |
|||
#18+
servit, Спасибо. Вроде то что надо. авторВыгружать - и совсем неважно куда - каждый раз по полбазы ... Как на это смотрит администратор MSSQL или он ещё не в курсе? Там не пол базы... Еще раз говорю, что в реале там вполне адекватный запрос, который предоставляет данные о новых готовых заявках для клиента. В результате передаются 3 реквизита готового заказа (которые однозначно определяют заказ или его часть). Но в зависимости от кол-ва заказов клиента их может быть как 2-3, так и 2-3 тысячи. И потом вторым запросом получается полная информация по выполненному заказу (или его части, если заказ был ранее выполнен частично), которая должна быть выгружена на ftp в отдельный файл для каждого заказа (части заказа). Поэтому ничего лишнего не тянется. Еще раз спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.03.2015, 13:05
|
|||
---|---|---|---|
|
|||
Вложенные запросы к SQL в Ensemble |
|||
#18+
AlexShiryaevПоэтому ничего лишнего не тянется.Неизбежно тянется: та часть результата первого запроса, которая не удовлетворила критериям второго, и есть лишнее. Полностью согласен с коллегами: лучше переписать 2 запроса в виде одного, а если это кажется сложным, то в виде хранимой процедуры. Тут, правда, потребуются некоторые знания T/SQL + права на создания хранимок, которых может и не быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=39&tablet=1&tid=1556693]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 450ms |
0 / 0 |