powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вложенные запросы к SQL в Ensemble
9 сообщений из 9, страница 1 из 1
Вложенные запросы к SQL в Ensemble
    #38919456
AlexShiryaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите, пожалуйста, возможно ли реализовать выполнение 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
ERROR <Ens>ErrGeneral:   SQLState: (HY000) NativeError: [0] Message: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt

В VB, например, данная проблема решалась добавлением в строку соединения параметра "MultipleActiveResultSets=true"
Есть ли что-то подобное в Ensemble? Или вопрос к драйверу ODBC?
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38919791
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexShiryaev,

вопрос либо к драйверу, либо к SQL-шлюзу Cache (Ensemble). ИМХО, проще переписать запрос - это ведь обычное соединение таблиц, не так ли?
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38920022
AlexShiryaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,

Я привел этот пример для простоты понимания. На самом деле запросы намного сложнее.
И не решаются обычным join.
К тому же в качестве второго запроса может быть не select, а update.
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38921282
AlexShiryaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Раз больше ответов нет, то видимо, действительно нельзя так использовать адаптер.
Тогда другой вопрос.
Т.к. в реале по первому запросу может быть много данных, то сохранять их в памяти не совсем хочется.
Думаю, сохранять во временном глобале. Потом использовать при помощи $ORDER.
В документации написано, что имя временного глобала должно начинаться на "CacheTempUser".
А как правильно пользоваться временными глобалами в бизнес-операции, когда подразумевается возможность использования ее при PoolSize>1? Чтобы 2 разных инстанса "не мешали" друг другу. Спасибо.
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38921302
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может можно в один запрос всё собрать?

Как вариант - сделать вторую операцию и в ней второй запрос.
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38921304
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще PrivateGlobals, когда этот глобал доступен только текущему процессу, тут к именованию нет особых требований
Да и по CacheTempUser это лишь рекомендация, он может называться так, может или иначе, главное чтобы ни с чем не персекался и начинался на ^CacheTemp, чтобы попал в БД CACHETEMP, которая не журналируется. чтобы разные процессы могли писать в один глобал, первым индексом можно использовать $job.
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38921443
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexShiryaevВ VB, например, данная проблема решалась добавлением в строку соединения параметра "MultipleActiveResultSets=true" Как на это смотрит администратор MSSQL или он ещё не в курсе?
Не проще ли будет написать хранимую процедуру в самой MSSQL, т.е. поближе к данным?
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38921475
AlexShiryaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Спасибо. Вроде то что надо.
авторВыгружать - и совсем неважно куда - каждый раз по полбазы ...
Как на это смотрит администратор MSSQL или он ещё не в курсе?

Там не пол базы... Еще раз говорю, что в реале там вполне адекватный запрос, который предоставляет данные о новых готовых заявках для клиента. В результате передаются 3 реквизита готового заказа (которые однозначно определяют заказ или его часть). Но в зависимости от кол-ва заказов клиента их может быть как 2-3, так и 2-3 тысячи. И потом вторым запросом получается полная информация по выполненному заказу (или его части, если заказ был ранее выполнен частично), которая должна быть выгружена на ftp в отдельный файл для каждого заказа (части заказа). Поэтому ничего лишнего не тянется.

Еще раз спасибо за помощь.
...
Рейтинг: 0 / 0
Вложенные запросы к SQL в Ensemble
    #38922313
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexShiryaevПоэтому ничего лишнего не тянется.Неизбежно тянется: та часть результата первого запроса, которая не удовлетворила критериям второго, и есть лишнее.

Полностью согласен с коллегами: лучше переписать 2 запроса в виде одного, а если это кажется сложным, то в виде хранимой процедуры. Тут, правда, потребуются некоторые знания T/SQL + права на создания хранимок, которых может и не быть.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вложенные запросы к SQL в Ensemble
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]