暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss 循序渐进:通过 raise notice 模拟 Oracle 的 DBMS_OUTPUT

原创 eygle 2020-08-02
1777

在 Oracle 数据库中,我们经常使用 DBMS_OUTPUT.PUT_LINE 来输出信息,以期达到屏幕显示,或者程序跟踪等目的,在 openGauss 中,可以通过 raise notice 来实现,当然这也是 postgresql 的标准方法。
PIC.jpg

以下是两段小代码:

DO $$
BEGIN 
  FOR enmotech IN 1..8 BY 2 LOOP
    RAISE NOTICE 'enmotech: %', enmotech;
  END LOOP;
END; $$;
DO $$
DECLARE 
    output record;
BEGIN 
    RAISE NOTICE 'Start at: %', sysdate;
    FOR output IN SELECT * FROM generate_series(1,10) LOOP
        RAISE NOTICE 'Hello, Enmo';
    END LOOP;
    RAISE NOTICE 'Stop at: %', sysdate;
END; $$;

输出的效果如下:

opengauss=# DO $$
opengauss$# BEGIN 
opengauss$#   FOR enmotech IN 1..8 BY 2 LOOP
opengauss$#     RAISE NOTICE 'enmotech: %', enmotech;
opengauss$#   END LOOP;
opengauss$# END; $$;
NOTICE:  enmotech: 1
NOTICE:  enmotech: 3
NOTICE:  enmotech: 5
NOTICE:  enmotech: 7
ANONYMOUS BLOCK EXECUTE

通过 raise notice 输出时间:

opengauss=# DO $$
opengauss$# DECLARE 
opengauss$#     output record;
opengauss$# BEGIN 
opengauss$#     RAISE NOTICE 'Start at: %', sysdate;
opengauss$#     FOR output IN SELECT * FROM generate_series(1,10) LOOP
opengauss$#         RAISE NOTICE 'Hello, Enmo';
opengauss$#     END LOOP;
opengauss$#     RAISE NOTICE 'Stop at: %', sysdate;
opengauss$# END; $$;
NOTICE:  Start at: 2020-06-02 13:59:55
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Hello, Enmo
NOTICE:  Stop at: 2020-06-02 14:00:13
ANONYMOUS BLOCK EXECUTE
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论