|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
T/SQL - способ получения числа строк таблицы по её имени или коду. |
|
Дата:
|
09 November 2006 |
|
Описание: |
Для этого используйте таблицу UserCountRows, а для её формирования - процедуру ProcedureUserCountRows. Время отработки процедуры зависит от общего числа строк во всех таблицах. Обсуждение довольно бурно проходит здесь: http://sql.ru/forum/actualthread.aspx?tid=361252 |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=199]T/SQL - способ получения числа строк таблицы по её имени или коду.[/CODEPOST] |
| Оценка: |
Проголосовало 1 посетителей, средняя оценка 3.00 |
| Оценить: |
|
1 -- Создание и обновление таблицы UserCountRows
2 CREATE PROCEDURE dbo.ProcedureUserCountRows
3 AS
4 DECLARE
5 @i Int,
6 @iMax Int,
7 @iId Int,
8 @sTable NVarChar(4000),
9 @sSql NVarChar(4000)
10 -- END DECLARE
11 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = object_id('dbo.UserCountRows')) TRUNCATE TABLE dbo.UserCountRows ELSE CREATE TABLE dbo.UserCountRows(id Int,RowsCount Int)
12 SET @i=1
13 SELECT @iMax=Count(*) FROM sysobjects WHERE xtype='U'
14 WHILE @i<=@iMax
15 BEGIN
16 SET @sSql='SELECT TOP 1 @iId=id,@sTable=name FROM (SELECT TOP '+Cast(@i AS NVarChar(4000))+' id,name FROM sysobjects WHERE xtype=''U'') a ORDER BY id DESC'
17 EXEC sp_executesql @sSql,N'@iId Int OUT,@sTable NVarChar(4000) OUT',@iId=@iId OUT,@sTable=@sTable OUT
18 SET @sSql='INSERT INTO dbo.UserCountRows SELECT '+Cast(@iId AS NVarChar(4000))+',COUNT(*) FROM '+@sTable
19 EXEC(@sSql)
20 SET @i=@i+1
21 END
22 /* Если кому непонятно как вытащить имя таблицы по её коду, объясняю:
23 * SELECT id,name FROM sysobjects
24 */-- Желаю приятной работы ;-) |
| Вернуться к списку исходников в категории ADO.NET |
|
|
 |
 |
 |
 |
|
|