更新时间:2024-06-03 GMT+08:00

数组支持的函数

  • 以下几点说明描述了数组类型函数在开启GUC参数varray_compat前后的差异行为:
    • count、extend、trim、delete、first、last、next和prior函数应用在未初始化的数组即数组为NULL时,开启参数会报Reference to uninitialized collection的错误,未开启则不报错。
    • 对于extend(count)函数和extend(count, idx)函数:count加上数组现有元素个数超过数组定义大小时,开启参数后会报Subscript outside of limit的错误,未开启则不报错。
    • 对于extend(count, idx)函数:下标idx不合法时开启参数后会报Subscript outside of limit或者Subscript beyond count的错误。
    • 对于trim(n)函数:当n大于数组元素个数时,开启参数后会报Subscript beyond count的错误,未开启则不报错。
    • 对于delete(idx)函数:下标idx不合法时开启参数后会报Subscript outside of limit或者Subscript beyond count的错误,未开启参数时返回原数组。
  • 以下示例为A兼容模式下的示例,函数定义说明里[]中的内容代表可选项,如count[()]表示可以写成count或count()。
  • 如在执行以下示例时遇到报错Cannot change the guc status while in the same session时,需要切换session后重新执行。
  • 在内层表达式中,不支持通过嵌套的方式调用数组类型函数。
  • extend[([count])]

    参数:count为int4类型。

    返回值:无返回值。

    功能描述:在varray变量末尾拓展1个或count个元素,元素默认扩展为NULL。

    示例1:extend,扩展1个元素,默认扩展为NULL。

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer();
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.extend;
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    0
    1
    ANONYMOUS BLOCK EXECUTE

    示例2:extend(count),扩展count个元素,默认扩展为NULL。

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer();
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.extend(3);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    0
    3
    ANONYMOUS BLOCK EXECUTE

    示例3:开启varray_compat参数时,extend后超过数组定义大小会报错。

    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer();
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.extend(3);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.extend(8); -- error
    gaussdb$# end;
    gaussdb$# /
    0
    3
    ERROR:  Subscript outside of limit
    CONTEXT:  PL/SQL function inline_code_block line 8 at assignment
    示例4:开启varray_compat参数时,数组未初始化会报错。
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.extend(3);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at assignment

  • extend(count, idx)

    参数:idx和count为int4类型。

    返回值:无返回值。

    功能描述:在varray变量末尾拓展count个元素,并且扩展元素的值等于给定idx下标元素的值。该功能需要设置a_format_version值为10c和设置a_format_dev_version值为s1后才能使用。

    示例1:extend(count, idx),扩展第idx位置的元素。

    gaussdb=# set a_format_version='10c';
    SET
    gaussdb=# set a_format_dev_version='s1';
    SET
    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2);
    gaussdb-# begin
    gaussdb$#     arrint.extend(2, 1);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     for i in 1..arrint.count loop
    gaussdb$#         dbe_output.print_line(arrint(i));
    gaussdb$#     end loop;
    gaussdb$# end;
    gaussdb$# /
    4
    1
    2
    1
    1
    ANONYMOUS BLOCK EXECUTE

    示例2:extend(count, idx),开启了varray_compat参数,且idx越界会报错。

    gaussdb=# set a_format_version='10c';
    SET
    gaussdb=# set a_format_dev_version='s1';
    SET
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer();
    gaussdb-# begin
    gaussdb$#     arrint.extend(10, 1); -- error index.
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Subscript beyond count
    CONTEXT:  PL/SQL function inline_code_block line 5 at assignment

    示例3:extend(count, idx),开启了varray_compat参数,数组未初始化时会报错。

    gaussdb=# set a_format_version='10c';
    SET
    gaussdb=# set a_format_dev_version='s1';
    SET
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.extend(10, 1);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at assignment
  • count[()]

    参数:无。

    返回值:int4类型。

    功能描述:返回数组中的元素个数。

    示例1:查看已初始化的数组元素个数。

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-#     len int;
    gaussdb-# begin
    gaussdb$#     arrint := array_integer(1, 2, 3);
    gaussdb$#     len := arrint.count();
    gaussdb$#     dbe_output.print_line(len);
    gaussdb$# end;
    gaussdb$# /
    3
    ANONYMOUS BLOCK EXECUTE

    示例2:开启varray_compat参数,且数组未初始化时会报错。

    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-#     len int;
    gaussdb-# begin
    gaussdb$#     len := arrint.count();
    gaussdb$#     dbe_output.print_line(len);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/SQL function inline_code_block line 6 at assignment

  • trim[(n)]

    参数:n为int4类型。

    返回值:无返回值。

    功能描述:无参数时,删除数组末尾一个元素空间,给定参数n时,删除数组末尾指定数量元素空间。

    示例1:删除数组中的n个元素,未开启参数varray_compat。

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2,3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.trim(1);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    3
    2
    ANONYMOUS BLOCK EXECUTE
    -- n大于数组元素个数,清空数组元素
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2,3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.trim(4);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    3
    0
    ANONYMOUS BLOCK EXECUTE

    示例2:删除数组中的n个元素,且n大于数组元素个数,未开启参数varray_compat。

    -- n大于数组元素个数,清空数组元素
    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2,3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.trim(4);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    3
    0
    ANONYMOUS BLOCK EXECUTE

    示例3:删除数组中的n个元素,且n大于数组元素个数,同时打开varray_compat参数。

    -- n大于数组元素个数时会报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2,3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count); -- count > 0.
    gaussdb$#     arrint.trim(4);
    gaussdb$# end;
    gaussdb$# /
    3
    ERROR:  Subscript beyond count
    CONTEXT:  PL/SQL function inline_code_block line 6 at assignment
    -- 数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.trim(1);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/SQL function inline_code_block line 5 at assignment

    示例4:数组未初始化,同时打开varray_compat参数。

    -- 数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.trim(1);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/SQL function inline_code_block line 5 at assignment

  • delete[()]

    参数:无参数。

    返回值:无返回值。

    功能描述:清空数组中的元素。

    示例1:清空数组中的元素,未开启参数varray_compat。

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2,3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete();
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    3
    0
    ANONYMOUS BLOCK EXECUTE
    -- 数组未初始化
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.delete();
    gaussdb$# end;
    gaussdb$# /
    ANONYMOUS BLOCK EXECUTE

    示例2:清空数组中的元素,同时开启参数varray_compat。

    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1,2,3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete();
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$# end;
    gaussdb$# /
    3
    0
    ANONYMOUS BLOCK EXECUTE
    -- 数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.delete();
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/SQL function inline_code_block line 5 at assignment

  • delete(idx)

    参数:int4类型。

    返回值:无返回值。

    功能描述:给定下标idx在数组范围内,则删除数组中给定下标idx的元素。

    示例1:给定idx下标在数组范围内。

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(2);
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     for i in 1..arrint.count loop
    gaussdb$#         dbe_output.print_line(arrint(i));
    gaussdb$#     end loop;
    gaussdb$# end;
    gaussdb$# /
    3
    2
    1
    3
    ANONYMOUS BLOCK EXECUTE
    

    示例2:给定idx下标在数组范围外,未开启参数varray_compat。

    -- 未开参数varray_compat
    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(4);
    gaussdb$#     raise info '%', arrint;
    gaussdb$# end;
    gaussdb$# /
    3
    INFO:  {1,2,3}
    ANONYMOUS BLOCK EXECUTE
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer:= array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(11);
    gaussdb$#     raise info '%', arrint;
    gaussdb$# end;
    gaussdb$# /
    3
    INFO:  {1,2,3}
    ANONYMOUS BLOCK EXECUTE
    
    -- 开启参数varray_compat后报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(4);
    gaussdb$#     raise info '%', arrint;
    gaussdb$# end;
    gaussdb$# /
    3
    ERROR:  Subscript beyond count
    CONTEXT:  PL/SQL function inline_code_block line 6 at assignment
    
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer:= array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(11);
    gaussdb$#     raise info '%', arrint;
    gaussdb$# end;
    gaussdb$# /
    3
    ERROR:  Subscript outside of limit
    CONTEXT:  PL/SQL function inline_code_block line 6 at assignment

    示例3:给定idx下标在数组范围外,开启参数varray_compat。

    -- 开启参数varray_compat后报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer := array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(4);
    gaussdb$#     raise info '%', arrint;
    gaussdb$# end;
    gaussdb$# /
    3
    ERROR:  Subscript beyond count
    CONTEXT:  PL/SQL function inline_code_block line 6 at assignment
    
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer:= array_integer(1, 2, 3);
    gaussdb-# begin
    gaussdb$#     dbe_output.print_line(arrint.count);
    gaussdb$#     arrint.delete(11);
    gaussdb$#     raise info '%', arrint;
    gaussdb$# end;
    gaussdb$# /
    3
    ERROR:  Subscript outside of limit
    CONTEXT:  PL/SQL function inline_code_block line 6 at assignment

    示例4:开启varray_compat参数后,数组未初始化时报错。

    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type array_integer is varray(10) of integer;
    gaussdb-#     arrint array_integer;
    gaussdb-# begin
    gaussdb$#     arrint.delete(2);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at assignment
  • first[()]

    参数:无。

    返回值:int4类型。

    功能描述:返回数组中第一个元素的下标,若没有第一个元素,则返回NULL。

    示例:

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc');
    gaussdb-# begin
    gaussdb$#     raise info 'first is %',v.first();
    gaussdb$# end;
    gaussdb$# /
    INFO:  first is 1
    ANONYMOUS BLOCK EXECUTE
    -- 数组未初始化返回NULL
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-# begin
    gaussdb$#     raise info 'first is %',v.first;
    gaussdb$# end;
    gaussdb$# /
    INFO:  first is <NULL>
    ANONYMOUS BLOCK EXECUTE
    -- 开启varray_copmat参数后,数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-# begin
    gaussdb$#     raise info 'first is %',v.first;
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at RAISE

  • last[()]

    参数:无。

    返回值:int4类型。

    功能描述:返回数组中最后一个元素的下标。若没有最后一个元素,则返回NULL。

    示例1:

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc');
    gaussdb-# begin
    gaussdb$#     raise info 'last is %',v.last();
    gaussdb$# end;
    gaussdb$# /
    INFO:  last is 2
    ANONYMOUS BLOCK EXECUTE
    -- 数组未初始化返回NULL
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-# begin
    gaussdb$#     raise info 'last is %',v.last;
    gaussdb$# end;
    gaussdb$# /
    INFO:  last is <NULL>
    ANONYMOUS BLOCK EXECUTE
    -- 开启varray_copmat参数后,数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-# begin
    gaussdb$#     raise info 'first is %',v.last;
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at RAISE

  • prior(idx)

    参数:int4类型。

    返回值:int4类型。

    功能描述:返回数组中指定下标的前一个元素下标,若无法找到对应元素下标则返回NULL。

    示例:

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc');
    gaussdb-# begin
    gaussdb$#     raise info 'prior is %',v.prior(2);
    gaussdb$# end;
    gaussdb$# /
    INFO:  prior is 1
    ANONYMOUS BLOCK EXECUTE
    
    -- 下标越界,大于数组范围
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc','qwe');
    gaussdb-# begin
    gaussdb$#     raise info 'prior is %',v.prior(10);
    gaussdb$# end;
    gaussdb$# /
    INFO:  prior is 3
    ANONYMOUS BLOCK EXECUTE
    
    -- 开启varray_copmat参数后,数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-# begin
    gaussdb$#     raise info 'prior is %',v.prior(2);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at RAISE

  • next(idx)

    参数:int4类型。

    返回值:int4类型。

    功能描述:返回数组中指定下标的后一个元素下标,若无法找到对应元素下标则返回NULL。

    示例:

    gaussdb=# set behavior_compat_options = '';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc');
    gaussdb-# begin
    gaussdb$#     raise info 'next is %',v.next(1);
    gaussdb$# end;
    gaussdb$# /
    INFO:  next is 2
    ANONYMOUS BLOCK EXECUTE
    
    -- 下标越界,大于数组范围
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc','qwe');
    gaussdb-# begin
    gaussdb$#     raise info 'next  is %',v.next(10);
    gaussdb$# end;
    gaussdb$# /
    INFO:  next  is <NULL>
    ANONYMOUS BLOCK EXECUTE
    
    -- 开启varray_copmat参数后,数组未初始化报错
    gaussdb=# set behavior_compat_options = 'varray_compat';
    SET
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-# begin
    gaussdb$#     raise info 'next  is %',v.next(1);
    gaussdb$# end;
    gaussdb$# /
    ERROR:  Reference to uninitialized collection
    CONTEXT:  PL/pgSQL function inline_code_block line 4 at RAISE

  • exists(idx)

    参数:int4类型。

    返回值:true或false,Boolean类型。

    功能描述:查找指定位置是否存在有效元素。

    示例:

    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr := varr('asd','zxc');
    gaussdb-#     flag bool;
    gaussdb-# begin
    gaussdb$#     flag := v.exists(1);
    gaussdb$#     raise info '%',flag;
    gaussdb$#     flag := v.exists(3);
    gaussdb$#     raise info '%',flag;
    gaussdb$#     flag := v.exists(7);
    gaussdb$#     raise info '%',flag;
    gaussdb$# end;
    gaussdb$# /
    INFO:  t
    INFO:  f
    INFO:  f
    ANONYMOUS BLOCK EXECUTE
    -- 数组未初始化返回false
    gaussdb=# declare
    gaussdb-#     type varr is varray(10) of varchar(3);
    gaussdb-#     v varr;
    gaussdb-#     flag bool;
    gaussdb-# begin
    gaussdb$#     flag := v.exists(1);
    gaussdb$#     raise info '%',flag;
    gaussdb$#     flag := v.exists(3);
    gaussdb$#     raise info '%',flag;
    gaussdb$#     flag := v.exists(7);
    gaussdb$#     raise info '%',flag;
    gaussdb$# end;
    gaussdb$# /
    INFO:  f
    INFO:  f
    INFO:  f
    ANONYMOUS BLOCK EXECUTE