SQL Server获取视图信息

在本教程中,将学习几种方法来获取SQL Server数据库中的视图信息。

使用 sql.sql_module 目录获取视图信息

要获取视图的信息,请使用系统目录sys.sql_moduleOBJECT_ID()函数:

SELECT
    definition,
    uses_ansi_nulls,
    uses_quoted_identifier,
    is_schema_bound
FROM
    sys.sql_modules
WHERE
    object_id
    = object_id(
            'sales.daily_sales'
        );

在此查询中,将视图名称传递给WHERE子句中的OBJECT_ID()函数。OBJECT_ID()函数返回模式范围数据库对象的标识号。

以下是输出结果:

definition                                                                                                                                                                                                                                                       uses_ansi_nulls uses_quoted_identifier is_schema_bound
 --------------- ---------------------- ---------------
CREATE   VIEW sales.daily_sales (
    year,
    month,
    day,
    customer_name,
    product_id,
    product_name,
    sales
)
AS
SELECT
    year(order_date),
    month(order_date),
    day(order_date),
    concat(
        first_name,
    1               1                      0

(1 行受影响)

请注意,需要将结果输出为文本格式,以便清楚地看到SELECT语句,如上图所示。

要以文本形式显示结果,请在查询编辑器中按Ctrl-T 键盘快捷键或单击结果到文本按钮,如以下屏幕截图所示:

使用sp_helptext存储过程获取视图信息

sp_helptext存储过程返回用户定义对象(如视图)的定义。

要获取视图的信息,请将视图名称传递给sp_helptext存储过程。 例如,以下语句返回sales.daily_sales视图的信息:

EXEC sp_helptext 'sales.daily_sales' ;

以下是输出结果:

Text
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE   VIEW sales.daily_sales (
    year,
    month,
    day,
    customer_name,
    product_id,
    product_name,
    sales
)
AS
SELECT
    year(order_date),
    month(order_date),
    day(order_date),
    concat(
        first_name,
        ' ',
        last_name
    ),
    p.product_id,
    product_name,
    quantity * i.list_price
FROM
    sales.orders AS o
    INNER JOIN
        sales.order_items AS i
    ON o.order_id = i.order_id
    INNER JOIN
        production.products AS p
    ON p.product_id = i.product_id
    INNER JOIN sales.customers AS c
    ON c.customer_id = o.customer_id;

使用OBJECT_DEFINITION()函数获取视图信息

获取视图信息的另一种方法是使用OBJECT_DEFINITION()OBJECT_ID()函数,如下所示:

SELECT 
    OBJECT_DEFINITION(
        OBJECT_ID(
            'sales.staff_sales'
        )
    ) view_info;

以下是输出结果:


上一篇: SQL Server视图 下一篇: SQL Server存储过程