eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« Oracle发布7月份安全公告,360安全大脑测绘云再获Oracle官方致谢-墨天轮 | Blog首页 | CRM 王者之战:四十年的茅台和二十年的 Salesforce-墨天轮 »

循序渐进 openGauss : 构建一个基本的函数 Loop 测试Update循环-墨天轮
modb.pro

墨天轮原文链接:https://www.modb.pro/db/28009

在数据库的测试实验中,我们竟成需要通过循环进行基本的功能验证测试,在 Oracle 中通过 for ... Loop 循环,同样可以在 openGauss 中实现。

在数据库的测试实验中,我们竟成需要通过循环进行基本的功能验证测试,在 Oracle 中通过 for ... Loop 循环,同样可以在 openGauss 中实现。

首先构建一个测试表:

postgres=# create table enmo as select row_number() OVER (ORDER BY name) id ,name from pg_settings;
INSERT 0 542
postgres=# select * from enmo where id < 10;
 id |              name              
----+--------------------------------
  1 | DateStyle
  2 | FencedUDFMemoryLimit
  3 | IntervalStyle
  4 | RepOriginId
  5 | TimeZone
  6 | UDFWorkerMemHardLimit
  7 | acce_min_datasize_per_thread
  8 | acceleration_with_compute_pool
  9 | advance_xlog_file_num
(9 rows)

创建一个包含一定功能的 Loop 函数:

postgres=# create or replace function enmoloop(em1 integer[],em2 bigint) returns 
postgres-# void AS $$
postgres$# declare ini integer;
postgres$# declare num integer;
postgres$#   begin
postgres$#   ini :=1;
postgres$#   num = 1;
postgres$#   for ini in 1..em2 loop 
postgres$#     UPDATE enmo SET id=em1[num] + 2020 WHERE id = ini;
postgres$#     num = num +1;
postgres$#     if (num>6) then
postgres$#       num = 1;
postgres$#     end if;
postgres$#   end loop;
postgres$#  end;
postgres$# $$ LANGUAGE plpgsql;
CREATE FUNCTION

调用这个函数:

postgres=# select enmoloop(array[1,4,5,6,7,8],1000);
 enmoloop 
----------
 
(1 row)

检查数据情况:

postgres=# select * from enmo where id < 10;
 id | name 
----+------
(0 rows)

postgres=# select * from enmo where id < 2022;
  id  |              name               
------+---------------------------------
 2021 | DateStyle
 2021 | acce_min_datasize_per_thread
 2021 | allow_concurrent_tuple_update
 2021 | archive_timeout
 2021 | audit_dml_state
 2021 | audit_grant_revoke
 2021 | audit_space_limit
 2021 | autoanalyze
 2021 | autovacuum_io_limits
...

在 openGauss 和 Oracle 的上手实践中,对于 DBA 们事实上,是非常友好的。


历史上的今天...
    >> 2012-07-22文章:
    >> 2008-07-22文章:
           歌华经历的数据库"攻击"
    >> 2007-07-22文章:
    >> 2006-07-22文章:

By enmotech on 2020-07-22 11:59 | Comments (0) | modb.pro | 3408 |


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com