Inserir tratamento de excesão Banco de Dados Pl/SQL

5 respostas Resolvido
bancojava
W

Solicito ajuda no seguinte caso:

Tenho uma agenda de demissão, essa por sua vez faz a consulta em um banco de dados (Oracle PL/SQL).

Após o usuário informar a matricula do empregado o programa realiza a consulta e traz para o usuário dados do funcionário na tela, assim para criar um agendamento o usuário informa os campos faltantes que não são trazidos na consulta, que são: DATA DE DEMISSAO e o HORAIO, e seleciona o botão agendar.

Quando o Agendamento é realizado as informações que estão na tela vão para uma outra tabela de agendamentos. Minha dúvida é como eu posso criar uma exceção no PL/SQL para que haja somente dois HORAIOS duplicados.

Exemplo:

Vou agendar três funcionários, o primeiro com data de 17/09/2018 sendo seu horário ás 08:00.

O Segundo funcionário eu agendo na data de 17/09/2018 sendo seu horário ás 08:00.

O terceiro funcionários eu tento também agendar na data de 17/09/2018 sendo o horário ás 08:00, porem quando tentar agendar ele me informaria a mensagem que os agendamentos nesta data e horário já estão esgotados, favor escolher outros.

Preciso saber se posso realizar esse tratamento de exceção no PL/SQL, e como devo proceder.

Agradeço a ajuda.

5 Respostas

J

Pelo seu enunciado o bloco PL/SQL serve apenas para recuperar as informações e apresentá-las ao usuário.
Sendo assim a tratativa não cabe ao bloco PL/SQL e sim na própria aplicação!
Antes de salvar um novo agendamento, realize uma consulta na tabela de agendamentos verificando se já existem 2 agendamentos salvos para a data e horário em questão!
Feito isso, basta tratar o retorno da consulta, se existirem emita um aviso ao usuário, caso contrário siga com o processo de salvar!

W

Escrevi este comando:

SELECT COUNT(*) QUANTIDADE FROM VOP_CSI_GFG_AFP_SALVARAGENDA SL WHERE SL. DATADESL = ‘09.08.2018’ AND SL. HORARIO = ‘08:00’

J

E qual é o retorno desta consulta ?

W

É a quantidade de vezes que o horario se repete dentro desta data na tabela, assim consigo fazer a logica de caso o horario se repita > 2 eu aviso o usuario que não poderá escolher esse horario.

J
Solucao aceita

Recupere o valor retornado pela consulta SQL, e faça a tratativa!

Exemplo:

//Execute a query sql
//Feito isso você terá o ResultSet desta query

int quantidade = resultset.getInt("QUANTIDADE"); //Recuperando o retorno da consulta (COUNT(*) AS QUANTIDADE)

if (quantidade >= 2) {
    //Mensagem de que não pode salvar o agendamento.
}
Criado 17 de setembro de 2018
Ultima resposta 19 de set. de 2018
Respostas 5
Participantes 2