Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Можно ли как то выполнить батч, чтобы он вернул тз (число прочтений - 1792 )
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Можно ли как то выполнить батч, чтобы он вернул тз
21. Июля 2010 :: 18:21
Печать  
Приветсвую уважаемые форумчане!
Код
Выбрать все
РезТЗ = СоздатьОбъект("ТаблицаЗначений");
_RS.ВыполнитьИнструкцию("
	|IF OBJECT_ID(N'tempdb..#__Oborot', N'U') IS NOT NULL drop table #__Oborot;
	|create table #__Oborot(Менеджер Char(9), Сумма Numeric(9), Дата Char(8));
	|insert  #__Oborot
	|select top 1000
	|	r.sp421 as Менеджер
	|	,r.sp422 as Сумма
	|	,left(r.DATE_TIME_IDDOC,8) as Дата
	|from ra426 as r (nolock);
	|select * from #__Oborot
	|", РезТЗ);

 



Можно ли как то в 1с++ вышеприведенный tsql код выполнить в одном батче, так чтобы в 1С вернулся результат последнего select'а ?

Код в QA проверен, ВыпонитьИнструкцию возвращает пустую ТЗ, даже без структуры. В документации по ВыпонитьИнструкцию  написано
Цитата:
Если запрос содержит несколько SQL инструкций (multistatement batch), результаты возвращаются только от первой инструкции.

У меня по алгоритму результат будет не в первой инструкции батча, а в последней.

Здесь приведен батч только  чтобы показать суть вопроса.
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #1 - 21. Июля 2010 :: 18:42
Печать  
Пока писал, нашел решение

Код
Выбрать все
	_RS.Выполнить("
	|IF OBJECT_ID(N'tempdb..#__Oborot', N'U') IS NOT NULL drop table #__Oborot;
	|create table #__Oborot(Менеджер Char(9), Сумма Numeric(9), Дата Char(8));
	|insert  #__Oborot
	|select top 1000
	|	r.sp421 as Менеджер
	|	,r.sp422 as Сумма
	|	,left(r.DATE_TIME_IDDOC,8) as Дата
	|from ra426 as r (nolock)");
	_RS.ВыполнитьИнструкцию("select * from #__Oborot", РезТЗ);
 

  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #2 - 21. Июля 2010 :: 18:42
Печать  
конкретно для этого примера достаточно будет в начале написать set nocount on
  

1&&2&&3
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #3 - 21. Июля 2010 :: 18:48
Печать  
set nocount on - действительно помогло, спасибо.
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #4 - 21. Июля 2010 :: 18:49
Печать  
Немного оффтопа,
А _RS.Выполнить не убивает созданную в нем временную таблицу ?
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #5 - 21. Июля 2010 :: 18:52
Печать  
нет
ее никто не убивает пока ты сам этого не сделаешь или пока коннект не закроешь
  

1&&2&&3
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #6 - 21. Июля 2010 :: 18:55
Печать  
а выполнитьиструкцию прибивает временную таблицу, проверял.
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #7 - 21. Июля 2010 :: 18:58
Печать  
ev-kov писал(а) 21. Июля 2010 :: 18:55:
а выполнитьиструкцию прибивает временную таблицу, проверял.

не сочиняй, а проверь еще раз
  

1&&2&&3
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Можно ли как то выполнить батч, чтобы он вернул тз
Ответ #8 - 21. Июля 2010 :: 19:06
Печать  
и правда что то я напутал, на тесте не удалилась временная таблица.
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать