0

循序渐进 openGauss : 构建一个基本的函数 Loop 测试Update循环

eygle 2020-07-21
308
摘要:在数据库的测试实验中,我们竟成需要通过循环进行基本的功能验证测试,在 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 们事实上,是非常友好的。

「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
最新发布
暂无内容,敬请期待...
数据库资讯
最新 热门 更多
本月热门
近期活动
全部
暂无活动,敬请期待...
相关课程
全部
暂无课程,敬请期待...