2009/2/6 Anderson <[email protected]>: > 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_ > >
Não lhe parece estranho este SELECT: 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; Count(and_id) mas com and_id na cláusula GROUP BY? Será sempre 1? Osvaldo PS. O erro é porque você está tratando como array um campo que não foi definido como array. _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
