OLá Anderson,
   Pelo que entendi, e posso estar enganado, vc declarou a variavel como 
integer(> XANDCDREMESSA integer;)
   mas ta tratando como array (and_cd_remessa=XANDCDREMESSA[I])

será que vc esqueceu de declarar como array 
> XANDCDREMESSA integer[];

se for só isso ve o parametro de entrada pq tambem é só um integer.


Se não for isso, se vc puder explicar melhor..

Luiz Magno Diogo
Analista de Sistemas
Mondrian Tecnologia


On Fri, 6 Feb 2009 14:40:35 -0200, Anderson <[email protected]> wrote:
> 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