GBase 8a创建存储过程、存储函数未保留注释解决方案

问题来源

在项目现场,业务员反馈在创建存储过程、存储函数时,注释内容没有存进系统的元数据库,导致show create命令无法显示出注释。

问题复现

创建存储过程并用show命令显示,在创建的过程中加入注释

gccli -uroot -Dtest

GBase client 9.5.3.27.88ef4e28. Copyright (c) 2004-2022, GBase.  All Rights Reserved.

gbase> delimiter //
gbase> drop procedure if exists test_1 // 
Query OK, 0 rows affected (Elapsed: 00:00:00.12)

gbase> -- explanatory note 1
gbase> create procedure test_1 ()
    -> /* 
   /*> --explanatory note 2
   /*> --explanatory note 3
   /*> */
    -> begin
    -> -- explanatory note 1
    -> /* 
   /*> explanatory note 2
   /*> explanatory note 3
   /*> */
    -> 
    -> #this is test_sql
    -> select 'This is test' ;
    -> end //
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> delimiter ; 

在插入注释时,采用了“--”,“#”,“/**/”三中风格的注释。

采用show create命令显示

base> show create procedure test_1\G;
*************************** 1. row ***************************
           Procedure: test_1
            sql_mode: PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
    Create Procedure: CREATE DEFINER="root"@"%" PROCEDURE "test_1"()
begin

select 'This is test' ;
end
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
1 row in set (Elapsed: 00:00:00.00)

可以看出并没有显示注释内容

决方案

在采用gccli命令行登录集群时,加上 -c(小写)即可显示注释。-c参数为hint优化参数。

注意:-c参数只对函数体生效,即begin后的内容生效,begin之前的内容需要增加COMMENT关键字

示例:

创建存储过程

gccli -uroot -Dtest -c
GBase client 9.5.3.27.88ef4e28. Copyright (c) 2004-2022, GBase.  All Rights Reserved.

gbase> delimiter //
gbase> drop procedure if exists test_1 // 
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> -- explanatory note 1
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> create procedure test_1 ()
    ->  
    -> COMMENT '--explanatory note 2'
    -> begin
    -> -- explanatory note 1
    -> /* 
   /*> explanatory note 2
   /*> explanatory note 3
   /*> */
    -> 
    -> #this is test_sql
    -> select 'This is test' ;
    -> end //
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

gbase> delimiter ; 

显示存储过程

gbase> show create procedure test_1\G;                                                                                  
*************************** 1. row ***************************
           Procedure: test_1
            sql_mode: PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH
    Create Procedure: CREATE DEFINER="root"@"%" PROCEDURE "test_1"()
    COMMENT '--explanatory note 2'
begin
-- explanatory note 1
/* 
explanatory note 2
explanatory note 3
*/

#this is test_sql
select 'This is test' ;
end
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
1 row in set (Elapsed: 00:00:00.00
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值