Ir para conteúdo
Fórum Script Brasil
  • 0

Como executar uma função dinamicamente para obter resultados diferentes ?


lucasiigd

Pergunta

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.

função lançar_nota.JPG

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...