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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值