PG_GET_VIEWDEF
功能描述
Vastbase G100在Oracle或MySQL兼容模式下,支持保存和查看创建视图时的注释信息。
语法格式
pg_get_viewdef(iscreatesql_bool,'view_name')
pg_get_viewdef(iscreatesql_bool,view_id)
pg_get_viewdef()函数用于为视图获取底层的SELECT命令,更多用法可参考系统信息函数。
仅Vastbase G100 V2.2 Build 10(Patch No.17)及以后版本支持此功能。
参数说明
view_name
视图名称。
viewid
视图ID,可以通过如下语句从PG_CLASS系统表中查询。
select oid from pg_class where relname='view_name';
iscreatesql_bool
是否使用用户创建视图时的sql。
true:使用用户创建视图时的sql获取视图对象定义。
false:使用原本的pg_get_viewdef函数获取视图对象定义。
注意事项
该功能在数据库兼容模式为Oracle或者MySQL时能够使用(即创建DB时DBCOMPATIBILITY='A'或者'B'),在其他数据库兼容模式下不能使用该特性。
示例
1、创建并切换至兼容模式为MySQL的数据库db_mysql下。
CREATE DATABASE db_mysql dbcompatibility='B';
\c db_mysql
2、创建测试表并插入测试数据。
CREATE TABLE products_1133053(
ProductID int,
Name varchar,
Price int,
Quantity int);
INSERT INTO products_1133053 values(101, 'Laptop', 15000, 100);
INSERT INTO products_1133053 values(102, 'Desktop', 20000, 150);
INSERT INTO products_1133053 values(104, 'Mobile', 3000, 200);
INSERT INTO products_1133053 values(105, 'Tablet', 4000, 250);
3、创建带注释的物化视图。
CREATE MATERIALIZED VIEW view_1133053 as
/* THIS IS FOR TEST
zhongwenceshi 中文测试中文测试中文测试@####
&&*9r20t80----------======+++====
*/
SELECT * FROM products_1133053;
4、通过视图名称查看视图的定义。
SELECT pg_get_viewdef(true, 'view_1133053');
返回结果如下,可以查看到定义视图时的完整注释。
pg_get_viewdef
---------------------------------------------
+
/* THIS IS FOR TEST +
zhongwenceshi 中文测试中文测试中文测试@####+
&&*9r20t80----------======+++==== +
*/ +
SELECT * FROM products_1133053;
(1 row)
5、查询视图的oid。
select oid from pg_class where relname='view_1133053';
返回结果如下:
oid
-------
18503
(1 row)
6、用上一步得到的视图ID查看视图的定义。
SELECT pg_get_viewdef(true,18503);
返回结果如下,可以查看到定义视图时的完整注释。
pg_get_viewdef
---------------------------------------------
+
/* THIS IS FOR TEST +
zhongwenceshi 中文测试中文测试中文测试@####+
&&*9r20t80----------======+++==== +
*/ +
SELECT * FROM products_1133053;
(1 row)