Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
Сижу туплю, в упор не вижу в чем проблема( Почему когда выполняется просто запрос, то выводится 5 строчек данных (т.е. все), а при записи результата в переменную только одна, причем последняя? Что не так у меня?

declare @a varchar (50)
select @a = Name from Sotr where Post='Менеджер' 
print @a
21 дек 12, 20:04    [13668509]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
в переменную можно положить только 1 значение
а по условию выбора у вас выбирается 5
вот последнее выбранное в переменной и остается
21 дек 12, 20:06    [13668516]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
а как можно вектор записать в скаляр то?
21 дек 12, 20:06    [13668517]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
Crimean, я понимаю, что только одно значение может находится в переменной. но как-то можно сделать же, чтобы оно менялось?
21 дек 12, 20:08    [13668524]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
поясните. вот пример с данными:

set nocount on

declare @Sotr table ( Post varchar( 20 ) , Name varchar( 50 ) )

insert into @Sotr values ( 'Менеджер' , 'Вася 1' )
insert into @Sotr values ( 'Менеджер' , 'Вася 2' )
insert into @Sotr values ( 'Менеджер' , 'Вася 3' )
insert into @Sotr values ( 'Менеджер' , 'Вася 4' )
insert into @Sotr values ( 'Менеджер' , 'Вася 5' )

insert into @Sotr values ( 'Уборщик' , 'Коля 1' )
insert into @Sotr values ( 'Уборщик' , 'Коля 2' )
insert into @Sotr values ( 'Уборщик' , 'Коля 3' )

declare @a varchar (50)
set @a = '123'
print @a

select @a = Name from @Sotr where Post='Менеджер' 
print @a
21 дек 12, 20:11    [13668541]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
Crimean
поясните. вот пример с данными:

set nocount on

declare @Sotr table ( Post varchar( 20 ) , Name varchar( 50 ) )

insert into @Sotr values ( 'Менеджер' , 'Вася 1' )
insert into @Sotr values ( 'Менеджер' , 'Вася 2' )
insert into @Sotr values ( 'Менеджер' , 'Вася 3' )
insert into @Sotr values ( 'Менеджер' , 'Вася 4' )
insert into @Sotr values ( 'Менеджер' , 'Вася 5' )

insert into @Sotr values ( 'Уборщик' , 'Коля 1' )
insert into @Sotr values ( 'Уборщик' , 'Коля 2' )
insert into @Sotr values ( 'Уборщик' , 'Коля 3' )

declare @a varchar (50)
set @a = '123'
print @a

select @a = Name from @Sotr where Post='Менеджер' 
print @a


вот при таком раскладе как я понимаю будет выдаваться все время Вася5. А мне нужно чтобы они по одному выдавались разные, мне просто эта переменная нужна для заполнения другой таблицы, где в работе участвуют разные менеджеры, а не один и тот же.
21 дек 12, 20:15    [13668563]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
выдаваться будет последняя вычитанная. а какая в конкретно данном примере - неизвестно
а кто мешает сделать insert select?
ну и курсоры, в конце-то концов?
21 дек 12, 20:23    [13668609]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Виктор62
А мне нужно чтобы они по одному выдавались разные, мне просто эта переменная нужна для заполнения другой таблицы, где в работе участвуют разные менеджеры, а не один и тот же.
Так заполните "другую таблицу" из запроса.

Ещё бывают вресменные таблицы и таблицы-переменные, можно в них положить результат запроса.
21 дек 12, 20:24    [13668613]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
Crimean
поясните. вот пример с данными:

set nocount on

declare @Sotr table ( Post varchar( 20 ) , Name varchar( 50 ) )

insert into @Sotr values ( 'Менеджер' , 'Вася 1' )
insert into @Sotr values ( 'Менеджер' , 'Вася 2' )
insert into @Sotr values ( 'Менеджер' , 'Вася 3' )
insert into @Sotr values ( 'Менеджер' , 'Вася 4' )
insert into @Sotr values ( 'Менеджер' , 'Вася 5' )

insert into @Sotr values ( 'Уборщик' , 'Коля 1' )
insert into @Sotr values ( 'Уборщик' , 'Коля 2' )
insert into @Sotr values ( 'Уборщик' , 'Коля 3' )

declare @a varchar (50)
set @a = '123'
print @a

select @a = Name from @Sotr where Post='Менеджер' 
print @a


Вообще у меня такая задача: есть вот эта таблица Sotr(SotrId,Post,Name) и таблица Work(Id,--,--,--,SotrID). Таблица сотрудников уже заполнена, а таблицу работ я заполняю и вот туда мне нужно занести айдишники сотрудников, которые являются менеджерами
21 дек 12, 20:25    [13668631]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Виктор62
Вообще у меня такая задача: есть вот эта таблица Sotr(SotrId,Post,Name) и таблица Work(Id,--,--,--,SotrID). Таблица сотрудников уже заполнена, а таблицу работ я заполняю и вот туда мне нужно занести айдишники сотрудников, которые являются менеджерами
Так заполните запросом, переменные тут не нужны.

См. в BOL команду INSERT
21 дек 12, 20:29    [13668654]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
alexeyvg
Виктор62
Вообще у меня такая задача: есть вот эта таблица Sotr(SotrId,Post,Name) и таблица Work(Id,--,--,--,SotrID). Таблица сотрудников уже заполнена, а таблицу работ я заполняю и вот туда мне нужно занести айдишники сотрудников, которые являются менеджерами
Так заполните запросом, переменные тут не нужны.

См. в BOL команду INSERT

а 1000 строк я тоже буду через insert заполнять? или я не понимаю чего то...(
21 дек 12, 20:31    [13668666]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Виктор62,

ага
21 дек 12, 20:32    [13668675]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
а 1000 строк я тоже буду через insert заполнять? или я не понимаю чего то...(
21 дек 12, 20:32    [13668677]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
Crimean
Виктор62,

ага

можете структуру, конструкцию написать о чем речь?
21 дек 12, 20:33    [13668689]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
Виктор62
Member

Откуда:
Сообщений: 17
Crimean
Виктор62,

ага

если делать во временную таблицу, то у меня тоже только одна запись добавляется
declare @a varchar (50)
declare @i int
create table #table (id int)
select @a = SotrID from Sotr where Post='Менеджер'
insert into #table values (@a)
select * from #table
drop table #table
21 дек 12, 20:39    [13668732]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
Виктор62
Crimean
Виктор62,

ага

если делать во временную таблицу, то у меня тоже только одна запись добавляется
declare @a varchar (50)
declare @i int
create table #table (id int)
select @a = SotrID from Sotr where Post='Менеджер'
insert into #table values (@a)
select * from #table
drop table #table


особенно select @a=SotrID from Sotr where Post='Менеджер' доставляет...
@a ты объявил как скалярную переменную. Что-ж ты еще хочешь?
21 дек 12, 20:53    [13668783]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Виктор62
alexeyvg
пропущено...
Так заполните запросом, переменные тут не нужны.

См. в BOL команду INSERT

а 1000 строк я тоже буду через insert заполнять? или я не понимаю чего то...(
Да, одной командой insert всю тысячу строк.

Вы пример, про который я вам сказал, смотрели?
21 дек 12, 22:42    [13669231]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
create table #table (id int)
insert into #table select SotrID from Sotr where Post='Менеджер' 
select id from #table
drop table #table


аналогично через табличные переменные.
22 дек 12, 10:38    [13670175]     Ответить | Цитировать Сообщить модератору
 Re: Запись результата в переменную (T-SQL)  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
автор
Вообще у меня такая задача: есть вот эта таблица Sotr(SotrId,Post,Name) и таблица Work(Id,--,--,--,SotrID). Таблица сотрудников уже заполнена, а таблицу работ я заполняю и вот туда мне нужно занести айдишники сотрудников, которые являются менеджерами

При таком условии временные таблицы не нужны. Делается
insert into Work (--,--,--) select Sotr(--,--,--) where Post='Менеджер' 
22 дек 12, 10:46    [13670185]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить