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

Откуда:
Сообщений: 6
Добрый день!

Подскажите, пожалуйста, как решить следующую задачу:

нужно чтобы хранимая процедура sp_test;2 возвращала не все записи @TXT из БД, а только их количество:
CREATE PROC sp_test;2
    @DAT1  SMALLDATETIME,
    @DAT2  SMALLDATETIME
AS

DECLARE  @TXT VARCHAR(8000)
SET DATEFORMAT DMY 

SELECT @TXT=' SELECT  * FROM PLAN WHERE DEL = 0'
SELECT @TXT=@TXT+' AND((DATA>='+''''+CAST(@DAT1-1 AS VARCHAR)+''''+' and DATA<'+''''+CAST(@DAT2+1 AS VARCHAR)+''''+'))'  
SELECT @TXT=@TXT+'AND(STATUS LIKE ''_____3%'' OR STATUS LIKE ''_____4%'' OR STATUS LIKE ''_____0%'' OR STATUS LIKE ''_____8%'')'
exec (@TXT)
GO


В моем примере запрос возвращает:
1 1914970 12.03.2012 0:00 9 NULL 1
2 1914987 12.03.2012 0:00 751 NULL 1
3 1914988 12.03.2012 0:00 755 NULL 0
4 1914989 12.03.2012 0:00 757 NULL 0
5 1914990 12.03.2012 0:00 759 NULL 0
А нужно чтобы возращало количество записей, т.е. в данном примере =5
15 мар 12, 15:44    [12254388]     Ответить | Цитировать Сообщить модератору
 Re: вернуть количество записей из БД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
Gulsu
А нужно чтобы возращало количество записей, т.е. в данном примере =5
Вместо SELECT * написать SELECT count(*)
15 мар 12, 15:47    [12254436]     Ответить | Цитировать Сообщить модератору
 Re: вернуть количество записей из БД  [new]
Cntrl-C
Guest
без скана:

select rows
from sys.partitions
where [object_id] = object_id('MyTable')
and index_id in (0,1)
15 мар 12, 21:39    [12256975]     Ответить | Цитировать Сообщить модератору
 Re: вернуть количество записей из БД  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Cntrl-C
без скана:

select rows
from sys.partitions
where [object_id] = object_id('MyTable')
and index_id in (0,1)


тогда уж по хорошему:

select sum(rows)
from sys.partitions
where [object_id] = object_id( 'MyTable', 'U' )
and index_id < 2
group by object_id
15 мар 12, 21:46    [12257003]     Ответить | Цитировать Сообщить модератору
 Re: вернуть количество записей из БД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
Knyazev Alexey
Cntrl-C
без скана:

select rows
from sys.partitions
where [object_id] = object_id('MyTable')
and index_id in (0,1)


тогда уж по хорошему:

select sum(rows)
from sys.partitions
where [object_id] = object_id( 'MyTable', 'U' )
and index_id < 2
group by object_id
Круто, и при этом будут учтены условия ТС?

Gulsu
WHERE DEL = 0'
SELECT @TXT=@TXT+' AND((DATA>='+''''+CAST(@DAT1-1 AS VARCHAR)+''''+' and DATA<'+''''+CAST(@DAT2+1 AS VARCHAR)+''''+'))'  
SELECT @TXT=@TXT+'AND(STATUS LIKE ''_____3%'' OR STATUS LIKE ''_____4%'' OR STATUS LIKE ''_____0%'' OR STATUS LIKE ''_____8%'')'

:-)
15 мар 12, 22:05    [12257098]     Ответить | Цитировать Сообщить модератору
 Re: вернуть количество записей из БД  [new]
Gulsu
Member

Откуда:
Сообщений: 6
Спасибо Всем за помощь!
16 мар 12, 09:50    [12258198]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить