在本教學中,將學習幾種方法來獲取SQL Server資料庫中的視圖資訊。
使用 sql.sql_module 目錄獲取視圖資訊
要獲取視圖的資訊,請使用系統目錄sys.sql_module
和OBJECT_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存儲過程