VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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、用上一步得到的视图ID查看视图的定义。

SELECT pg_get_viewdef(true,18503);

返回结果如下,可以查看到定义视图时的完整注释。

               pg_get_viewdef
---------------------------------------------
                                            +
 /* THIS IS FOR TEST                        +
 zhongwenceshi 中文测试中文测试中文测试@####+
 &&*9r20t80----------======+++====          +
 */                                         +
 SELECT * FROM products_1133053;
(1 row)