boa tarde pessoal,

estou fazendo esta procedure para ser disparada por um trigger, mas está
dando um erro na contrução da array, alguem poderia me ajudar a resolver
este problema....

CREATE OR REPLACE FUNCTION "public"."sp_atualiza_andamento" (integer)
RETURNS integer AS
$body$
/* Corpo da nova função */
DECLARE
XIDUSU ALIAS FOR $1;
XCONTA integer;
XANDID integer;
XANDCDREMESSA integer;
XANDDTANDAMENTO varchar;
XANDCDUSUARIO integer;
XANDCDUNIDADE integer;
XANDCDROMANEIO integer;
XANDLOCALIZAÇÃO varchar;
XARRAY integer;
XCONTAIDREMESSA integer;
BEGIN

SELECT into XCONTA,XANDCDREMESSA count(and_id),and_cd_remessa FROM
tb_andamentoremessa WHERE and_localizacao='P' GROUP BY and_id,and_cd_remessa
ORDER BY and_id ASC;

FOR I IN 1..XCONTA LOOP

      SELECT INTO
XCONTAIDREMESSA,XANDID,XANDCDREMESSA,XANDDTANDAMENTO,XANDCDUSUARIO,XANDCDUNIDADE,XANDCDROMANEIO,XANDLOCALIZAÇÃO
count(and_cd_remessa),and_id,and_cd_remessa,and_dt_andamento,and_cd_usuario,usu_cd_unidade,and_cd_romaneio,and_localizacao
FROM tb_andamentoremessa WHERE and_cd_remessa=XANDCDREMESSA[I] GROUP BY
and_id,and_cd_remessa,and_dt_andamento,and_cd_usuario,usu_cd_unidade,and_cd_romaneio,and_localizacao
ORDER BY and_id ASC;

             FOR I IN 1..XCONTAIDREMESSA LOOP

                 INSERT INTO tb_andamentoconcluido (and_id,
                                                    and_cd_remessa,
                                                    and_dt_andamento,
                                                    and_cd_usuario,
                                                    usu_cd_unidade,
                                                    and_cd_romaneio,
                                                    and_localizacao
                                                    )VALUES(
                                                    XANDID,
                                                    XANDCDREMESSA,

quote_literal(XANDDTANDAMENTO),
                                                    XANDCDUSUARIO,
                                                    XANDCDUNIDADE,
                                                    XANDCDROMANEIO,

quote_literal(XANDLOCALIZAÇÃO)
                                                    );

                 DELETE FROM tb_andamentoremessa WHERE
and_cd_remessa=XANDCDREMESSA;

             END LOOP;
END LOOP;

RETURN XANDCDREMESSA;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;



*erro retornado*
ERROR:  cannot subscript type integer because it is not an array
CONTEXT:  SQL statement "SELECT
count(and_cd_remessa),and_id,and_cd_remessa,and_dt_andamento,and_cd_usuario,usu_cd_unidade,and_cd_romaneio,and_localizacao
FROM tb_andamentoremessa WHERE and_


Muito obrigado.

Anderson
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a