Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
muk07 Member Откуда: Челябинск Сообщений: 1853 |
Имеется 2 sql запроса, тексты которых лежат в переменных @sql1 и @sql2. Запросы возвращают разные имена полей. Но сравнивать надо 1-е из @sql1 с 1м из @sql2, второе со вторым и т.д. Порядок строк в запросах ожидается одинаковым. Равны ли результаты? Главное - как то извлечь рез-ты из @sql1,@sql2 Делаю попытку: declare @sql1 varchar(2000) set @sql1='select * from Depart' declare @s1 varchar(2000) set @s1='select * into #t1 from ('+@sql1+') t' select @s1 -- получается "select * into #t1 from (select * from Depart) t" -- и выполнение этого оператора вполне корректно exec (@s1) select * from #t1 -- invalid object name #t1 drop table #t1 Может кто укажет ошибку? Заранее спасибо. (MS SQL SERVER 2005) |
12 дек 12, 15:29 [13619898] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
create table #t ... declare @sql1 varchar(2000) set @sql1='select * from Depart' declare @s1 varchar(2000) set @s1='insert into #t select * from ('+@sql1+') t' select @s1 -- получается "select * into #t1 from (select * from Depart) t" -- и выполнение этого оператора вполне корректно exec (@s1) select * from #t1 -- invalid object name #t1 drop table #t1 |
12 дек 12, 15:36 [13619971] Ответить | Цитировать Сообщить модератору |
muk07 Member Откуда: Челябинск Сообщений: 1853 |
Я думаю, вы ошибаетесь: books on line:
операторы select * into #t1 from (select * from Depart) t select * from #t1 drop table #t1 успешно работают. Никакого create table не требуется |
||
12 дек 12, 15:45 [13620081] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
muk07, BOL - читаем про область видимости временых таблиц |
12 дек 12, 15:48 [13620116] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||||
12 дек 12, 15:49 [13620133] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
muk07, а вот если таблицу создать ДО DSQL, то использовать её можно будет и после. |
12 дек 12, 15:52 [13620154] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
|
||
12 дек 12, 15:54 [13620193] Ответить | Цитировать Сообщить модератору |
muk07 Member Откуда: Челябинск Сообщений: 1853 |
Спасибо, сейчас попробую. Хотя как - не знаю. Мне неизвестно что написано в запросах sql1,sql2 |
12 дек 12, 15:54 [13620195] Ответить | Цитировать Сообщить модератору |
muk07 Member Откуда: Челябинск Сообщений: 1853 |
Да, вы правы, iap, спасибо. Если таблица не временная, то работает. declare @sql1 varchar(2000) set @sql1='select * from Depart' declare @s1 varchar(2000) set @s1='select * into tt1 from ('+@sql1+') t' select @s1 -- получается "select * into tt1 from (select * from Depart) t" -- и выполнение этого оператора вполне корректно exec (@s1) select * from tt1 drop table tt1 Сергей Алексеевич, а вы передергиваете. фраза "успешно работает" в моем тексте относилась ко 2му запросу а вы делаете вид, что к первому. Кстати если #t1 уже существует, то select into выдаст ошибку |
12 дек 12, 16:12 [13620361] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
внезапно |
||
12 дек 12, 16:46 [13620797] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
хмм ... ![]() |
||
12 дек 12, 17:17 [13621090] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |