Jump to content
Fórum Script Brasil
  • 0

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


lucasiigd
 Share

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...