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
  

Mensagemem Sex, 11 Dez 2009 9:20 am

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:

Código: Selecionar todos
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;

/
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 9:48 am

Cara, juro composto ou simples?
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 9:50 am

Será Juro Simples.
estou quebrando a cabeça aqui nessa procedure.
Em SQL é mole mole...rsrsrsrs
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 9:52 am

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

so faz um select (seu calculo) from dual e retorna o resultado.
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 9:58 am

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.

Código: Selecionar todos
v_qtde_parcelas := (v_valor_compra / v_valor_parcela);
v_valor_juros := ((0.3* v_valor_compra) * v_qtde_parcelas);
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 9:59 am

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

Ai eu estou me perdendo....

Obrigado pela ajuda...
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 10:01 am

Trabalha com parâmetro na procedure, como tu já tinha no teu exemplo, e use estes parâmetros nos seus calculos.
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 10:03 am

A taxa que eu passei ali em cima ta errada , é 0.03 e não 0.3
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 10:39 am

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
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 11:10 am

Informando o valor da parcela como parametro

Código: Selecionar todos
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

Código: Selecionar todos
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.
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 1:21 pm

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
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 1:31 pm

Cara warning não é erro.

Funionou, imprimiu algo na tela??

Onde tu ta criando essas procedures??
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 1:32 pm

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

Valeu!
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 1:39 pm

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.



Código: Selecionar todos
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.
SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Mensagemem Sex, 11 Dez 2009 1:48 pm

Sergio,

Fiz assim e está funcionando.

Código: Selecionar todos
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!
juliano11
Localização: São Paulo/SP

Mensagemem Sex, 11 Dez 2009 2:01 pm

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

Código: Selecionar todos

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;

SergioLBJr
Localização: Parobé - RS

Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s



Voltar para PL/SQL

Quem está online

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