PG_GET_VIEWDEF
功能描述
Vastbase G100在Oracle或MySQL兼容模式下,支持使用PG_GET_VIEWDEF函数保存和查看创建视图时的注释信息。
语法格式
pg_get_viewdef(iscreatesql_bool,'view_name')
pg_get_viewdef(iscreatesql_bool,view_id)
pg_get_viewdef()函数用于为视图获取底层的SELECT命令,更多用法可参考系统信息函数。
参数说明
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时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A'或者'B')。
示例
1、创建测试表并插入测试数据。
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);
2、创建带注释的物化视图。
CREATE MATERIALIZED VIEW view_1133053 as
/* THIS IS FOR TEST
zhongwenceshi 中文测试中文测试中文测试@####
&&*9r20t80----------======+++====
*/
SELECT * FROM products_1133053;
3、通过视图名称查看视图的定义。
SELECT pg_get_viewdef(true, 'view_1133053');
返回结果为:
pg_get_viewdef
---------------------------------------------
+
/* THIS IS FOR TEST +
zhongwenceshi 中文测试中文测试中文测试@####+
&&*9r20t80----------======+++==== +
*/ +
SELECT * FROM products_1133053;
(1 row)
4、查询视图的oid。
SELECT oid FROM pg_class WHERE relname='view_1133053';
返回结果为:
oid
-------
18503
(1 row)
5、用步骤4得到的视图ID查看视图的定义。
SELECT pg_get_viewdef(true,18503);
返回结果为:
pg_get_viewdef
---------------------------------------------
+
/* THIS IS FOR TEST +
zhongwenceshi 中文测试中文测试中文测试@####+
&&*9r20t80----------======+++==== +
*/ +
SELECT * FROM products_1133053;
(1 row)
6、清理测试表。
DROP TABLE products_1133053 CASCADE;