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存儲過程