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
