在本教程中,将学习几种方法来获取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;
以下是输出结果: