首页 > 解决方案 > 打印数组值的不同结果

问题描述

我正在编写一个存储过程,它接受一个字符串作为输入,然后将该字符串转换为一个以逗号作为分隔符的数组,一旦我拥有该数组,我将根据需要将字符串“_1”附加到数组的每个元素进一步利用它。但是,当我执行此存储过程以查找结果时, raise info 命令在打印数组的值时表现不同(值会明显改变,但它们显示的格式会改变)

CREATE OR REPLACE FUNCTION Test1(inputlist text) RETURNS text AS $BODY$
DECLARE
a text;
acceptList text[];
counter integer;
length integer;
BEGIN
acceptList = string_to_array(inputList,',');

SELECT array_length(acceptList,1) into length;

RAISE INFO 'Length : %',length;
RAISE INFO 'AcceptList Print 1 : %',acceptList;
counter = 0;
FOREACH a in ARRAY acceptList LOOP
    acceptList[counter] = a||'_1';
    counter = counter + 1;
    END LOOP;
RAISE INFO 'AcceptList Print 2 : %',acceptList;
END;
$BODY$ 
LANGUAGE plpgsql;

消息选项卡中的输出将是:

INFO:  Length : 4
INFO:  AcceptList Print 1 : {INC000073535133,INC000073533828,INC000073535942,INC000073535857}
INFO:  Acceptlist Print 2 : [0:4]={INC000073535133_1,INC000073533828_1,INC000073535942_1,INC000073535857_1,INC000073535857}

如果您在上面的输出中注意到值被正确附加,那么在打印 2 中它会在打印数组的值之前显示大小以及等于符号

想了解为什么会出现这种行为

标签: arraysfor-looppostgresql-9.4

解决方案


推荐阅读