在本教程中,将学习如何通过查询系统目录视图列出SQL Server数据库中的所有视图。
要列出SQL Server数据库中的所有视图,请查询sys.views
或sys.objects
目录视图。 下面是一个例子:
SELECT
OBJECT_SCHEMA_NAME(v.object_id) schema_name,
v.name
FROM
sys.views as v;
该查询返回以下模式名称和视图名称列表:
在此示例中,使用OBJECT_SCHEMA_NAME()
函数来获取视图的模式名称。
以下查询通过sys.objects
视图返回视图列表:
在SQL Server数据库中创建存储过程以显示视图
以下存储过程包装上面的查询,以根据输入模式名称和视图名称列出SQL Server数据库中的所有视图:
CREATE PROC usp_list_views(
@schema_name AS VARCHAR(MAX) = NULL,
@view_name AS VARCHAR(MAX) = NULL
)
AS
SELECT
OBJECT_SCHEMA_NAME(v.object_id) schema_name,
v.name view_name
FROM
sys.views as v
WHERE
(@schema_name IS NULL OR
OBJECT_SCHEMA_NAME(v.object_id) LIKE '%' + @schema_name + '%') AND
(@view_name IS NULL OR
v.name LIKE '%' + @view_name + '%');
例如,如果想知道包含sales
的视图,可以调用存储过程usp_list_views
:
EXEC usp_list_views @view_name = 'sales'
调用上面存储过程,得到以下结果: