Jump to content
Fórum Script Brasil

lucasiigd

Membros
  • Posts

    5
  • Joined

  • Last visited

Everything posted by lucasiigd

  1. Boa tarde Edmilton, sou novo no postgre, então eu vou tentar ajudar. Pelo que vejo "lo_export" parece ser uma função, certo ? Se for o caso, então quando se executa ela no pgadmin, ela vai funcionar mesmo pois a consulta retornará um valor e será mostrado logo em seguida. Quando se chama uma função dentro de outra, o resultado precisa ser armazenado em uma variável, portanto eu creio que foi por isso que o sistema emitiu esse erro pra você. Se estiver tentando apenas EXECUTAR a função lo_export, eu recomendo que tente trocar o SELECT por PERFORM, o comando PERFORM descarta o resultado da consulta. Agora se estiver tentando SALVAR ou RETORNAR o resultado dessa consulta, eu recomendo criar uma variável do tipo RECORD e usar o comando SELECT acrescentando a clausula INTO para que o postgre jogue o resultado dessa consulta dentro dessa variável. Ficaria mais ou menos assim. DECLARE resultado record; BEGIN SELECT lo_export(Clinha,'//sicsistemas/c/testeexport.r' ) INTO resultado FROM tremessa WHERE nid_tremessa = 480 ; RETURN resultado; END Espero ter ajudado, forte abraço
  2. Boa tarde Romário, eu sou bem novato no postgre sql, mas eu creio que esse link vai te ajudar. http://pgdocptbr.sourceforge.net/pg80/triggers.html Este link vai te levar até a documentação do Postgre, onde fala sobre as funções Triggers (gatilhos), essas funções podem executar determinadas ações ANTES ou DEPOIS de haver inserções, atualizações ou exclusões, ou seja quando os comandos insert, update e/ou delete forem executados. Dessa forma você poderá criar um gatilho onde o postgre vai executar a atualização da tabela SALDO_CONTAS logo depois que você inserir ou alterar um dado na tabela MOVIMENTO_CONTA. Espero ter ajudado, forte abraço
  3. lucasiigd

    Triggers

    Ola Josieli, eu fiz dessa forma e deu certo, espero que ajude create trigger verifica_sem_municipio AFTER insert on cidade -- troquei o before pelo after, porque pra mim fica estranho deletar um registro que ainda não foi inserido. For Each Row execute procedure apaga_estado(); CREATE OR REPLACE FUNCTION public.apaga_estado() RETURNS trigger AS $BODY$ declare cd_cidade integer; cd_estado integer; begin cd_cidade := new.id_cidade; -- atribui o novo ID da cidade na variável cd_estado := new.id_estado; -- mantive o seu código if not exists(select * from cidade where id_estado = cd_estado) then delete from public."cidade" where cidade.id_cidade = cd_cidade; -- Fiz isso pra apagar o ultimo --registro inserido no banco. Esse "public.cidade" que coloquei é pra referenciar a tabela cidade, no --PgAdmin III é necessario fazer isso. end if; return null; End; $BODY$ LANGUAGE plpgsql
  4. Olá amigos, estou tentando inserir dados em uma tabela através de uma função (que eu chamo de lancar_nota), a minha ideia é inserir o numero inicial, final e a empresa e então a função alimentaria o meu banco de dados automaticamente, por exemplo: SELECT lancar_nota(1,20,'LUCAS'); Essa função lançaria 20 notas na empresa LUCAS, o problema é que estou tendo os mesmos valores (o resultado está em anexo). Se eu executar a função manualmente várias vezes (ou seja SELECT lancar_nota(1,1,'LUCAS'), depois rodar novamente SELECT lancar_nota(2,2,'LUCAS') e assim por diante) eu obtenho valores diferentes (que é o meu objetivo), portanto eu presumo que a minha função está correta, eu acho. Por favor se alguém puder me ajudar, desde já eu agradeço. Segue abaixo o código da função escrito em PLPGSQL CREATE OR REPLACE FUNCTION public.lancar_nota( numero_inicial integer, numero_final integer, apelido character varying) RETURNS void AS $BODY$ DECLARE desconto numeric(10,2); val_cont numeric(10,2); BEGIN IF numero_final < numero_inicial THEN RAISE NOTICE 'Numero Final não pode ser maior que o inicial, FIM DO PROCESSAMENTO'; END IF; FOR X IN numero_inicial..numero_final LOOP desconto := public.gerar_valor(); -- Função para gerar valor de 0 a 1999,99 val_cont := public.gerar_valor(); IF desconto >= val_cont -- Desconto não pode ser maior que o valor contábil THEN desconto := 0.00; END IF; INSERT INTO public.notas_icms(numero, dia, mes, tipo, apelido_empresa, valor_contabil, serie, desconto) VALUES (X, public.escolher_dia(), public.escolher_mes(),'S', apelido, val_cont,1,desconto); -- a função escolher dia e mês, geram dias e meses aleatórios END LOOP; RETURN; END; PS: Sou novo no assunto ainda, estou aprendendo.
  5. Ola ubiratan, estou iniciando no postgre sql também, se estiver usando o PgAdmin III, então a referenciação das tabelas é um pouco diferente, tente usar o "public." na frente da sua tabela. Ficaria mais ou menos assim: insert into public."ad_mestre values" ('01','123','123') PS: Não esqueça de usar a aspa dupla e o ponto.
×
×
  • Create New...