Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas em Criar (PROCEDURE)


Kassio Fernando

Pergunta

Boa Tarde! Sou novo aqui!

Não estou conseguindo Criar Uma Procedures,Poderiam me dar um Exemplo de uma feita pra me ajudar Ou Dicas!

Abaixo colocarei as tabelas e o problemas?

tabelas

Cidades: id_cidade; id_estado(FK); nome

Estados: id_estado; nome; sigla

Passageiros:id_passageiro; data_nasc[date]; nome[varchar]; rg[varchar]

Passagens:id_passagem; id_passageiro(fk); Cidade_destino(Fk)[varchar]; Cidade_Origem(FK)[varchar]; poltrona[int]

PROBLEMA: Não Consegui Criar uma Procedure que Limite a quantidade de passageiros por viagens e respectivas quantidades de poltrona. Ou seja, se atingir um limite de passageiros que oculparão as poltronas, a Procedure não deixa criar.

PROBLEMA2: Criar Outra Procedure que não deixe incluir um mesmo passageiro em um numero de poltrona oculpado

Editado por Denis Courcy
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

DROP PROCEDURE IF EXISTS prova.p_limite_passageiros;
CREATE PROCEDURE prova.`p_limite_passageiros`( p_passageiro int, p_cidade_origem int,p_cidade_destino int)
BEGIN

SET @poltrona = @poltrona + 1;

        IF( @poltrona <= 40 )THEN 
        INSERT INTO passagens ( id_passageiro, cidade_de_origem, cidade_de_destino, poltrona)
        VALUES ( p_passageiro , p_cidade_origem ,p_cidade_destino , @poltrona);
           
        END IF;
END;

Verifica se esta Certa de Acordo com o problema, foi o que eu cheguei mais perto!!

Link para o comentário
Compartilhar em outros sites

  • 0

CREATE PROCEDURE p_limita_passageiros (IN p_id_origem integer, IN p_id_destino integer, IN p_data_da_viagem DATE,
                                                                                          IN p_poltrona integer, IN p_corredor integer)
BEGIN
    
  DECLARE v_conta integer;
  DECLARE v_verifica_poltrona integer;
  
  SET v_conta = 0;
  SET v_verifica_poltrona = 0;
    
  SET v_verifica_poltrona = (SELECT COALESCE(COUNT(id_passagem),0)
     FROM passagens 
     WHERE id_origem = p_id_origem
     AND id_destino = p_id_destino
     AND data_da_viagem = p_data_da_viagem
     AND numero_da_poltrona NOT IN (

 SELECT numero_da_poltrona
  FROM passagens 
  WHERE id_origem = p_id_origem
  AND id_destino = p_id_destino
  AND data_da_viagem = p_data_da_viagem
  )
    );
                                
  SET v_conta = (SELECT COALESCE(COUNT(id_passagem),0)
     FROM passagens 
     WHERE id_origem = p_id_origem
     AND id_destino = p_id_destino
         AND data_da_viagem = p_data_da_viagem
            );                                
                                
if (v_conta <= 40) AND (v_verifica_poltrona = 0 ) then

  INSERT INTO passagens(id_origem,id_destino,data_da_viagem,numero_da_poltrona,corredor)
  VALUES(p_id_origem,p_id_destino,p_data_da_viagem,p_poltrona,p_corredor);

end if;
  
  
  
END;

Foi Corrigido o Problema! Coloquei aki o PROBLEMA 1!

Editado por Kassio Fernando
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...