Procedure

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

Bom dia pessoal,

Estou começando no Oracle agora e já estou precisando de uma procedure.
É mais ou menos assim:

Entrada => valor da compra
=> valor da prestação

calculo => juros 3% ao mês
=> quantidade de prestações

Então o cara vai digitar o valor da compra e da parcela.
Ai vai calcular os juros pra mim....

Eu fiz mais ou menos assim:

Selecionar tudo

create or replace procedure Paga_Quanto
(v_compra in number(16,2),
v_parcela in number(3),
v_valor number(16,2),
v_valor2 number(16,2));
is

begin
v_valor = ((v_compra /v_parcela)*3)/100;
v_valor2 = (v_valor + (v_compra /v_parcela))*v_parcela;

DBMS_OUTPUT.PUT_LINE ('Total = '||v_valor2);
DBMS_OUTPUT.PUT_LINE ('Parcelas = '||v_parcela);

END Paga_Quanto;

/
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara, juro composto ou simples?
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

Será Juro Simples.
estou quebrando a cabeça aqui nessa procedure.
Em SQL é mole mole...rsrsrsrs
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

se tu sabe fazer em sql então fica facil cara.

so faz um select (seu calculo) from dual e retorna o resultado.
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

pra tu ter a quantidade de parcelas divide o valor total pelo valor da percela.

e o calculo dos juros tu faz a taxa de 3 % sobre o total e multiplica pela quantidade de parcelas.

Selecionar tudo

v_qtde_parcelas := (v_valor_compra / v_valor_parcela);
v_valor_juros := ((0.3* v_valor_compra) * v_qtde_parcelas);
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

beleza..eu consegui...
Mas eu estou tentando deixar que o cliente digite os valores..entendeu?

Ai eu estou me perdendo....

Obrigado pela ajuda...
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Trabalha com parâmetro na procedure, como tu já tinha no teu exemplo, e use estes parâmetros nos seus calculos.
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

A taxa que eu passei ali em cima ta errada , é 0.03 e não 0.3
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

Putz galera..desisto...
será que ninguém tem ela ai pronta?!
Por favor...
preciso mostrar alguma coisa no período da tarde...

valeu!

Abraços
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Informando o valor da parcela como parametro

Selecionar tudo

create or replace procedure Paga_Quanto 
(p_compra in number(16,2), 
p_parcela in number(16,2)) is

v_total number(16,2);
v_qtde_parcelas number(3); 


begin 

v_qtde_parcelas = (p_compra /p_parcela); 
v_total = (p_compra + ((p_compra*0.03) * v_qtde_parcelas)); 

DBMS_OUTPUT.PUT_LINE ('Total = '||v_total); 
DBMS_OUTPUT.PUT_LINE ('Parcelas = '||v_qtde_parcelas); 

END Paga_Quanto;  
informando a quantidade de parcelas como parâmetro

Selecionar tudo

create or replace procedure Paga_Quanto 
(p_compra in number(16,2), 
p_qtde_parcelas in number(3)) is

v_total number(16,2);
v_parcelas number(16,2); 


begin 

v_total = (p_compra + ((p_compra*0.03) * p_qtde_parcelas)); 
v_parcelas (v_total / p_qtde_parcelas);

DBMS_OUTPUT.PUT_LINE ('Total = '||v_total); 
DBMS_OUTPUT.PUT_LINE ('Parcelas = '||v_parcelas); 

END Paga_Quanto;  
vê se serve, e retorna se deu certo, ou o que deu errado.
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

Fala Sérgio..
Apareceu assim pra mim:

Advertência: Procedimento criado com erros de compilação.

Nas 2 procedures que você me mandou.

o que eu faço? rsrsrs

Abraços
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara warning não é erro.

Funionou, imprimiu algo na tela??

Onde tu ta criando essas procedures??
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

Eu estou usando o SQL Plus....
Só que ele não perguntou pra eu colocar o valor de alguma coisa..
teria que aparecer?

Valeu!
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Baah, agora tu chegou num local q eu não sei quase nada.

Só trabelhei com querys no Plus, uso o PL-SQL para tudo, não sei direito o que pode estar acontecendo.

Mas o que eu posso te dizer para testar se os calculos estão certos é ao invés de criar uma procedure no plus faça apenas um pl mesmo.


Selecionar tudo

declare

v_compra number(16,2);
v_parcelas(16,2);
v_total number(16,2); 
v_qtde_parcelas number(3); 

begin 

v_compra := &compras;
v_parcela := &parcelas;
v_qtde_parcelas := (v_compra /v_parcela); 
v_total := (v_compra + ((v_compra*0.03) * v_qtde_parcelas)); 

DBMS_OUTPUT.PUT_LINE ('Total = '||v_total); 
DBMS_OUTPUT.PUT_LINE ('Parcelas = '||v_qtde_parcelas); 

END Paga_Quanto; 
tenta isso

outra coisa , ta faltando os dois pontos para atribuir valores as variaveis nas procedures acima.
juliano11
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Sex, 11 Dez 2009 9:17 am
Localização: São Paulo/SP

Sergio,

Fiz assim e está funcionando.

Selecionar tudo

declare

  v_compra number(16,2);
  v_parcela number(3);
  v_total number(16,2);
  v_qtde_parcelas number(3);

begin

  v_compra := &compras;
  v_parcela := &parcelas;

  v_qtde_parcelas := v_parcela;
  v_total := ((v_compra / v_qtde_parcelas) * 1.03);

  DBMS_OUTPUT.PUT_LINE ('Valor da parcela = '||v_total);
  DBMS_OUTPUT.PUT_LINE ('Número de Parcelas = '||v_qtde_parcelas);

END Paga_Quanto;


Mas como eu faço pra colocar em uma procedure?

Valeu mesmo!
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

os & irão virar parâmetros e só

Selecionar tudo


create or replace procedure calc_juros (p_vl_compra number(16,2),
                                                          p_qtde_parcelas       (3)) is

  v_total number(16,2); 
  
begin 

  v_total := ((p_vl_compra / p_qtde_parcelas) * 1.03); 

  DBMS_OUTPUT.PUT_LINE ('Valor da parcela = '||v_total); 
  DBMS_OUTPUT.PUT_LINE ('Número de Parcelas = '||p_qtde_parcelas); 

END calc_juros;

Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes