数据仓库服务 GAUSSDB(DWS)-数组:NEXT和PRIOR

时间:2023-11-22 14:18:35

NEXT和PRIOR

NEXT函数和PRIOR函数主要用于数组的循环遍历中,NEXT函数会根据入参index值,返回下一个数组元素的下标,若已经到达数组下标最大值则返回NULL。PRIOR函数会根据入参index值,返回上一个数组元素的下标,若已经到达数组下标最小值则返回NULL。

用法如下:

varray.NEXT(index)

varray.PRIOR(index)

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
--演示在存储过程中对数组NEXT和PRIOR函数的用法。
CREATE OR REPLACE PROCEDURE test_varray
AS 
    TYPE varray_type IS VARRAY(20) OF INT; 
    v_varray varray_type; 
    i int;
BEGIN 
    v_varray := varray_type(1, 2, 3);

    i := v_varray.COUNT;  
    WHILE i IS NOT NULL LOOP  
        DBMS_OUTPUT.PUT_LINE('test prior v_varray('||i||')=' || v_varray(i));  
        i := v_varray.PRIOR(i);  
    END LOOP; 

    i := 1;  
    WHILE i IS NOT NULL LOOP  
        DBMS_OUTPUT.PUT_LINE('test next v_varray('||i||')=' || v_varray(i));  
        i := v_varray.NEXT(i);  
    END LOOP;
END; 
/

执行结果:

1
2
3
4
5
6
7
call test_varray();
test prior v_varray(3)=3
test prior v_varray(2)=2
test prior v_varray(1)=1
test next v_varray(1)=1
test next v_varray(2)=2
test next v_varray(3)=3
support.huaweicloud.com/devg-820-dws/dws_04_0517.html