基于 XML 列创建视图

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

可以使用 xml 类型列创建视图。 下面的示例创建了一个视图,在该视图中,使用 xml 数据类型的 value() 方法检索 xml 类型列中的值。

-- Create the table.
CREATE TABLE T (
    ProductID INT PRIMARY KEY,
    CatalogDescription XML);
GO
-- Insert sample data.
INSERT INTO T VALUES(1,'<ProductDescription ProductID="1" ProductName="SomeName" />');
GO
-- Create view (note the value() method used to retrieve ProductName
-- attribute value from the XML).
CREATE VIEW MyView AS
  SELECT ProductID,
         CatalogDescription.value('(/ProductDescription/@ProductName)[1]', 'varchar(40)') AS PName
  FROM T;
GO

对此视图执行下面的查询:

SELECT *
FROM   MyView;

结果如下:

ProductID   PName
----------- ------------
1           SomeName

关于使用 xml 数据类型创建视图,请注意以下几点:

  • 可以在具体化视图中创建 xml 数据类型。 具体化视图不能基于 xml 数据类型方法。 但是,它可以转换为不同于基表中的 xml 类型列的 XML 架构集合。

  • 不能将 xml 数据类型用于分布式分区视图。

  • 不会将对视图运行的 SQL 谓词推送到相应视图定义的 XQuery 中。

  • 视图中的xml 数据类型方法不可更新。