Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kleydismar

Procedimento e PL/SQL

Recommended Posts

Bom dia galera...

 

Estou com uma dificuldade nesse exercicio, alguem pode me ajudar como eu faço para resolver.

 

o exercicio é o seguinte:

 

Crie um procedimento armazenado em PL/SQL para indicar se um aluno está apto ou não para renovar matrícula. Para estar apto não deverá ter dívidas não negociadas na tesouraria e nenhum livro em atraso na biblioteca. Deve ser informada como parâmetro a matrícula do aluno. Atualizar o status do aluno assim: 1 = devedor financeiro; 2 = devedor da biblioteca; 3 = devedor financeiro e da biblioteca; 9 = ok. Considerar as definições de tabelas seguintes:

a) ALUNOS (#ID_MATRICULA NUMBER(7), NM_ALUNO VARCHAR2(200), DT_NASC DATE, ST_ALUNO NUMBER(1));

b.) DEVEDORES (#ID_MATRICULA NUMBER(7), VL_DIVIDA NUMBER(12,2), DT_APURACAO_DIVIDA DATE, DT_RENEGOCIACAO_DIVIDA DATE, DT_PRAZO_FINAL DATE);

c) EMPRESTIMOS (#CD_LIVRO CHAR(6), #NU_EXEMPLAR NUMBER(3), #ID_MATRICULA NUMBER(7), DT_EMPRESTIMO DATE, QT_DIAS_PERMITIDOS NUMBER(2));

d) EXEMPLARES (#CD_LIVRO CHAR(6), #NU_EXEMPLAR NUMBER(3));

e) LIVROS (#CD_LIVRO CHAR(6), NM_TITULO VARCHAR2(200), CD_ASSUNTO CHAR(10)).

 

 

nesse dever tem como utilizar algum tipo de estrutura de decisão do tipo switch case??

como faço para resolver esse exercicio??

 

vlw galera!! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

E o seguinte Motta, eu senti dificuldade na linguagem usando oracle, pelo seguinte eu estava aprendendo sql server na faculdade no semestre anterior, derrepente nesse semestre tem um professor que usa oracle, e ele não entende nada de sql server so oracle. Ai ele passou esse exercício para gente. Então não sei como se faz um procedimento em PL/SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu fiz meio por cima porque estou correndo no trabalho, mas toma como base, com certeza existe uma forma melhor de criar essa procedure, mas acho que ajuda mais ou menos a entender.

 

CREATE OR REPLACE PROCEDURE SP_VERIFICA_STATUS (

p_ID_MATRICULA IN NUMBER,

p_STATUS OUT NUMBER,

p_MSG OUT VARCHAR2

)IS

V_MATRICULA_ENDIVIDADO NUMBER;

V_LIVRO_ENDIVIDADO NUMBER;

BEGIN

 

BEGIN

 

SELECT MAX( VERDADEIRO )

INTO V_MATRICULA_ENDIVIDADO

FROM (

SELECT

DISTINCT CASE WHEN TRUNC( DT_RENEGOCIACAO_DIVIDA ) > TRUNC( SYSDATE ) THEN 0 ELSE 1 END VERDADEIRO

FROM

DEVEDORES

WHERE ID_MATRICULA = P_ID_MATRICULA ) N01

 

EXCEPTION

WHEN NO_DATA_FOUND THEN

V_MATRICULA_ENDIVIDADO := 0;

END

 

BEGIN

 

SELECT MAX( VERDADEIRO )

INTO V_LIVRO_ENDIVIDADO

FROM (

SELECT

DISTINCT CASE WHEN ( TRUNC( DT_EMPRESTIMO ) + QT_DIAS_PERMITIDOS ) < TRUNC ( SYSDATE ) THEN 0 ELSE 1 END VERDADEIRO

FROM

EMPRESTIMOS

WHERE ID_MATRIOCULA = p_ID_MATRICULA ) N0;

 

EXCEPTION

WHEN NO_DATA_FOUND THEN

V_LIVRO_ENDIVIDADO := 0;

 

END

 

IF ( V_MATRICULA_ENDIVIDADO >= 1 AND V_LIVRO_ENDIVIDADO >= 1 ) THEN

p_STATUS := 3

ELSIF ( V_MATRICULA_ENDIVIDADO >= 1 AND V_LIVRO_ENDIVIDADO >= 0 ) THEN

p_STATUS := 1;

ELSIF ( V_MATRICULA_ENDIVIDADO >= 0 AND V_LIVRO_ENDIVIDADO >= 1 ) THEN

p_STATUS := 2;

ELSE

p_STATUS := 9;

END IF;

 

EXCEPTION

WHEN OTHERS THEN

p_MSG := SQLERRM;

p_STATUS := 0;

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.