gpt4 book ai didi

sql - 如何从数据库中获取 View 的行数?

转载 作者:行者123 更新时间:2023-12-05 01:37:44 24 4
gpt4 key购买 nike

我正在尝试创建一个自定义 View ,以获取数据库所有 View 和表的行数。

获取表的计数在 SQL Server 中是该死的

SELECT TABLE_SCHEMA,
TABLE_NAME = TABLES.TABLE_NAME,
RECORD_COUNT = MAX(SYSINDEXES.ROWS)
FROM SYS.SYSINDEXES "SYSINDEXES",
INFORMATION_SCHEMA.TABLES "TABLES"
WHERE TABLES.TABLE_NAME = OBJECT_NAME(SYSINDEXES.ID)
AND TABLES.TABLE_TYPE = 'BASE TABLE'
GROUP BY TABLES.TABLE_SCHEMA,
TABLES.TABLE_NAME

现在,我需要获取 VIEWS 的行数

我觉得唯一的方法是从 View 中计算行数即 count(*) from view_name

但是,我找不到一种方法让 View 的行数与 view_name、table_schema 等一起。

这方面的任何进展都会有所帮助。

最佳答案

嗯,它不是很漂亮,但这应该可以解决问题。

这适用于单个数据库,因为我使用系统 View “all_views”来获取数据。如果您想要其他东西,我相信它可以进行调整。

我还通过“schema_id”限制了我返回的 View 计数。您可以查看此内容并确定最适合您的内容。

最后,我刚刚吐出结果,以便您在 Management Studio 中运行时可以查看它们。您可能希望将结果插入表格或其他内容。如果是这样,只需将动态查询从选择更改为插入即可。

所以没有进一步的告别:

SET NOCOUNT ON

DECLARE @ViewName AS nVarChar(128)
, @Query AS nVarChar(500)

/* Declare Cursor */
DECLARE Cur_Views CURSOR
FOR
SELECT name
FROM [sys].[all_views] x
WHERE x.schema_id = 1

-- Loop through the views.
OPEN Cur_Views

-- Fetch the first view
FETCH NEXT FROM Cur_Views
INTO @ViewName

WHILE @@Fetch_Status = 0 BEGIN
-- Set up our dynamic sql
SELECT @Query = 'SELECT COUNT(*) AS [Count] FROM ' + @ViewName
-- Print the query we're executing for debugging purposes
-- PRINT @Query
-- Execute the dynamic query
EXECUTE(@Query)

-- Fetch subsequent views
FETCH NEXT FROM Cur_Views
INTO @ViewName

-- Loop back to the beginning
END -- WHILE @@Fetch_Status = 0 BEGIN

-- Close the cursor
CLOSE Cur_Views

-- Dispose of the cursor
DEALLOCATE Cur_Views

GO

关于sql - 如何从数据库中获取 View 的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8809263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com