返回是否可将指定的实例化视图定义为快速视图。
sa_materialized_view_can_be_immediate( view_name , owner_name )
view_name 此 CHAR(128) 参数用于指定实例化视图的名称。如果 view_name 为 NULL,则返回 [未找到表...
] 错误。
owner_name 此 CHAR(128) 参数用于指定实例化视图的所有者。如果 owner_name 为 NULL,则返回 [未找到表...
] 错误。
指定的手动视图是否可以变为快速视图有某些限制。此系统过程用于确定是否允许此更改。有关创建快速视图的其它限制的列表,请参见快速视图的附加限制。
sa_materialized_view_can_be_immediate 系统过程返回指定实例化视图的以下信息。
列名 | 数据类型 | 说明 |
---|---|---|
SQLStateVal | CHAR(6) | 返回的 SQLSTATE。 |
ErrorMessage | LONG VARCHAR | 与 SQLSTATE 对应的错误消息。 |
结果集中的每一行与返回的视图的一个 SQLSTATE 相对应。因此,如果实例化视图定义违反多条限制,结果会包含视图的多个行。
可将此系统过程的输出与 sa_materialized_view_info 系统过程的输出相结合,以获取有关视图状态和能否将其转换为快速视图的信息。请参见sa_materialized_view_info 系统过程中的 "示例" 部分。
DBA 权限,或对 DBO 拥有的过程的执行权限。
指定实例化视图的所有元数据和所有依赖性都将装载到服务器高速缓存中。
执行以下语句,创建手动视图 view10,然后刷新该视图。
CREATE MATERIALIZED VIEW view10 AS (SELECT C.ID, C.Surname, sum(P.UnitPrice) as revenue, C.CompanyName, SO.OrderDate FROM Customers C, SalesOrders SO, SalesOrderItems SOI, Products P WHERE C.ID = SO.CustomerID AND SO.ID = SOI.ID AND P.ID = SOI.ProductID GROUP BY C.ID, C.Surname, C.CompanyName, SO.OrderDate); REFRESH MATERIALIZED VIEW view10; |
可使用以下查询找出无法将 view10 转变为快速视图的原因:
SELECT SQLStateVal AS "SQLstate", ErrorMessage AS Description FROM sa_materialized_view_can_be_immediate( 'view10', 'DBA' ) ORDER BY SQLSTATE; |
SQLstate | 说明 |
---|---|
42WC3 | 实例化视图 view10 已经初始化,所以不能转变为快速视图。 |
42WCA | 实例化视图 view10 在不可为空的列上没有唯一索引,所以不能转变为快速视图。 |
42WC6 | COUNT(*) 需要作为 SELECT 列表的一部分,所以实例化视图不能转变为快速视图。 |
42WC7 | 实例化视图在非集合不可为空的列上没有唯一索引,所以不能转变为快速视图。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |