Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 @@rowcount  [new]
Antony GL
Member

Откуда: Рудный Алтай
Сообщений: 89
Добрый вечер!
Пытаюсь разобраться с @@ROWCOUNT, не выходит.
Применяю следующий код

select * from Table where Option = 3
 select @@rowcount


на выходе получаю сначала результат выборки, потом счетчик строк. А мне нужен только результат счетчика строк для этой выборки.
24 апр 13, 20:45    [14226953]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
select count(*) from Table where Option = 3
24 апр 13, 20:47    [14226963]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Antony GL
Добрый вечер!
Пытаюсь разобраться с @@ROWCOUNT, не выходит.
Применяю следующий код

select * from Table where Option = 3
 select @@rowcount


на выходе получаю сначала результат выборки, потом счетчик строк. А мне нужен только результат счетчика строк для этой выборки.


declare @str sysname = 'select * into ' + quotename( newid(), '[' ) + ' from Table where Option = 3'
exec (@str)
select @@rowcount
24 апр 13, 21:38    [14227159]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
Antony GL
Member

Откуда: Рудный Алтай
Сообщений: 89
Knyazev Alexey

Antony GL
Добрый вечер!
Пытаюсь разобраться с @@ROWCOUNT, не выходит.
Применяю следующий код

select * from Table where Option = 3
 select @@rowcount


на выходе получаю сначала результат выборки, потом счетчик строк. А мне нужен только результат счетчика строк для этой выборки.


select count(*) from Table where Option = 3


declare @str sysname = 'select * into ' + quotename( newid(), '[' ) + ' from Table where Option = 3'
exec (@str)
select @@rowcount


Спасибо за первый ответ!
Второй тоже попробую...
24 апр 13, 21:49    [14227186]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Knyazev Alexey
declare @str sysname = 'select * into ' + quotename( newid(), '[' ) + ' from Table where Option = 3'
exec (@str)
select @@rowcount
Уж лучше без динамического SQL:
declare @i int
select @i=1
from (
	select * from sysobjects
)t
select @@rowcount
24 апр 13, 22:08    [14227232]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
Exproment
Member

Откуда:
Сообщений: 416
Knyazev Alexey
declare @str sysname = 'select * into ' + quotename( newid(), '[' ) + ' from Table where Option = 3'
exec (@str)
select @@rowcount


Господи.. это зачем ? В этом есть некий сакральный смысл ? Или чисто так.. посмеяться ?
24 апр 13, 22:11    [14227244]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
alexeyvg
Уж лучше без динамического SQL:
declare @i int
select @i=1
from (
	select * from sysobjects
)t
select @@rowcount
Тогда уж лучше совсем упростить :)
declare @i int;
select @i = 1 from sysobjects;
select @@rowcount;
24 апр 13, 23:29    [14227474]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
invm
Тогда уж лучше совсем упростить :)
declare @i int;
select @i = 1 from sysobjects;
select @@rowcount;
Нет, тогда лучше использовать @i = count(*)

Тут смысл в том, что запрос может быть сложный, с top, группировками, кучей полей и подзапросов в select-е....
И начинающему программеру сложно будет корёжить список select-а, он просто испугается всё сломать :-)

Хотя наверное, что бы не корёжить, и ничего не менять, лучше написать @i = count(*), а основной запрос обернуть в подзапрос, это как то красивее и понятнее, чем так использовать @@rowcount...
25 апр 13, 00:00    [14227568]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
alexeyvg
Тут смысл в том, что запрос может быть сложный, с top, группировками, кучей полей и подзапросов в select-е....
И начинающему программеру сложно будет корёжить список select-а, он просто испугается всё сломать :-)


Интересно какая задача требует получить просто count(*) без получения самого результата запроса при том что
автор
запрос может быть сложный, с top, группировками, кучей полей и подзапросов в select-е....


Это же ужасно. Всеравно что построить ракету, слетать на луну, вернуться, и лишь для того, чтобы посмотреть насколько источиться карандаш у журналиста который будет брать интервью у космонавтов после прилета.
25 апр 13, 11:30    [14228929]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
ambarka_max,

Да, согласен, мне тоже непонятна задача ТС :-)

Наверное, так криво приложение написано - требует сначала получить количество записей, потом получить сами записи, потом показывает часть записей на экране, и всё это ради постраничной выборки.
25 апр 13, 12:55    [14229557]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
ambarka_max
Интересно какая задача требует получить просто count(*) без получения самого результата запроса
Не "без", а "до", как я понял.
Чтобы решить, получать на клиенте датасет такого размера или нет?
25 апр 13, 13:16    [14229654]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
babaEGA
Member

Откуда: Москва
Сообщений: 289
alexeyvg

Нет, тогда лучше использовать @i = count(*)

Тут смысл в том, что запрос может быть сложный, с top, группировками, кучей полей и подзапросов в select-е....
И начинающему программеру сложно будет корёжить список select-а, он просто испугается всё сломать :-)

Хотя наверное, что бы не корёжить, и ничего не менять, лучше написать @i = count(*), а основной запрос обернуть в подзапрос, это как то красивее и понятнее, чем так использовать @@rowcount...

@@rowCount вам никак не вернет количество записей ДО выполнения запроса...
Лучше уж действительно так
SELECT COUNT(*) FROM
(
ужасный и огромный запрос
 ) t
26 апр 13, 15:44    [14235787]     Ответить | Цитировать Сообщить модератору
 Re: @@rowcount  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
babaEGA
@@rowCount вам никак не вернет количество записей ДО выполнения запроса...
В моём варианте вернёт, запрос то выполнился.
babaEGA
Лучше уж действительно так
Это я согласен, выше написал.
26 апр 13, 21:53    [14237175]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить