putz Osvaldo meu inglês é meio fraquinho....

2009/2/10 Osvaldo Kussama <[email protected]>

> 2009/2/10 Anderson <[email protected]>:
> > pessoal to quase resolvendo, só falta uma ultima coisa, inserir na
> > tb_andamentoconcluido, mas ta dando o seguinte erro INSERT in not allowed
> in
> > a nom-volatile function.
> >
> > segue a procedure....
> >
> >
> > 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[];
> > XCONTAANDREMESSA integer[];
> > XANDCDREMESSA integer;
> > XANDDTANDAMENTO varchar;
> > XANDCDUSUARIO integer;
> > XANDCDUNIDADE integer;
> > XANDCDROMANEIO integer;
> > XANDLOCALIZACAO varchar(2);
> > XARRAY integer;
> > XCONTAIDREMESSA integer[];
> > XANDCDREMESSAA integer[];
> > XCONTA2 integer;
> > XINSERT text;
> > XDELETE text;
> > BEGIN
> >
> > XCONTAANDREMESSA := ARRAY(SELECT and_cd_remessa FROM tb_andamentoremessa
> > WHERE and_localizacao='P' ORDER BY and_cd_remessa ASC);
> >
> > XCONTA := array_upper(XCONTAANDREMESSA,1);
> >
> >     --LOOP PARA BUSCAR NA TABELA ANDAMENTOREMESSA OS REGISTROS PARA SEREM
> > INSERIDOS NA TABELA ANDAMENTO CONCLUIDO
> >     FOR I IN 1..XCONTA LOOP
> >
> >         --SELECT BUSCANDO OS REGISTROS DE ACORDO COM OS NUMEROS DAS
> REMESSAS
> > QUE ESTÃO ARMAZENADOS NA ARRAY XANDCDREMESSA
> >          XCONTAIDREMESSA:= ARRAY(SELECT and_cd_remessa FROM
> > tb_andamentoremessa WHERE and_cd_remessa=XCONTAANDREMESSA[I] ORDER BY
> > and_cd_remessa ASC);
> >
> >          XCONTA2 := array_upper(XCONTAIDREMESSA,1);
> >         --LOOP PARA INSERIR NA TABELA ANDAMENTO CONCLUIDO OS REGISTROS DA
> > TABELA ANDAMENTO REMESSA E UM DELETE NA TABELA ANDAMENTO REMESSA
> >
> >                  FOR J IN 1..XCONTA2 LOOP
> >
> >                  SELECT INTO
> >
> XANDCDREMESSA,XANDDTANDAMENTO,XANDCDUSUARIO,XANDCDUNIDADE,XANDCDROMANEIO,XANDLOCALIZACAO
> > and_cd_remessa,and_dt_andamento,
> >
> > and_cd_usuario,usu_cd_unidade,and_cd_romaneio,and_localizacao FROM
> > tb_andamentoremessa WHERE and_cd_remessa=XCONTAANDREMESSA[I];
> >
> > RAISE NOTICE 'Aqui a quantidade é %', XANDCDREMESSA;
> > RAISE NOTICE 'Aqui a quantidade é %', XANDDTANDAMENTO;
> > RAISE NOTICE 'Aqui a quantidade é %', XANDCDUSUARIO;
> > RAISE NOTICE 'Aqui a quantidade é %', XANDCDUNIDADE;
> > RAISE NOTICE 'Aqui a quantidade é %', XANDCDROMANEIO;
> > RAISE NOTICE 'Aqui a quantidade é %', XANDLOCALIZACAO;
> >
> >                 --INSERT NA TABELA ANDAMENTO CONCLUIDO
> >                 XINSERT:= 'INSERT INTO
> > tb_andamentoconcluido(and_con_cd_remessa,
> >                                                     and_con_dt_andamento,
> >                                                     and_con_cd_usuario,
> >                                                     usu_con_cd_unidade,
> >                                                     and_con_cd_romaneio,
> >
> > and_con_localizacao)VALUES('
> >                                                     ||XANDCDREMESSA||','
> >
> ||XANDDTANDAMENTO||','
> >                                                     ||XANDCDUSUARIO||','
> >                                                     ||XANDCDUNIDADE||','
> >                                                     ||XANDCDROMANEIO||','
> >
> ||XANDLOCALIZACAO||');';
> >                  EXECUTE XINSERT;
> >
> >                  --DELETA OS REGISTROS DA TABELA ANDAMENTO REMESSA
> >                DELETE FROM tb_andamentoremessa WHERE
> > and_cd_remessa=XANDCDREMESSAA[I];
> >
> >              END LOOP;
> > END LOOP;
> >
> >
> > RETURN 1;
> > END;
> > $body$
> > LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER;
> >
>
>
>
> Do manual:
> "STABLE indicates that the function cannot modify the database,..."
> http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a