Olá pessoal, estou em um semestre onde apresento um trabalho em banco de dados, sei que a procedure que estou cirando ficaria melhor na aplicação, porém preciso apresentar somente o banco de dados, um amigo me ajudou mas ele fez a logica em sql, tentei converter para MYSQl porém está dando erro, mostrarei a procecure e o erro, se precisarem posso postar também as tabelas, agradece qualquer ajuda estou desesperado.
Alias a ideia da procedure é analisar se a viatura e o motorista e o horário estão disponíveis para cadastrar uma nova viagem, se não estiverem, volta um ERRO se estiverem liberado fazemos o INSERTna tabela.
CREATE PROCEDURE ADICIONAR_VIAGEM99(
IN pIDVIAGENS INT ,
IN pCIDADE VARCHAR(25) ,
IN pDATAHORAINICIO DATETIME ,
IN pDATAHORAFINAL DATETIME ,
IN pCOR VARCHAR(15) ,
IN pCEP CHAR(9) ,
IN pRUA VARCHAR(30),
IN pNUMERO VARCHAR(8) ,
IN pBAIRRO VARCHAR(25) ,
IN pESTADO CHAR(2) ,
IN pDESCRICAO VARCHAR(200),
IN pID_DADOSPESSOAS INT,
IN pID_MOTORISTA INT,
IN pID_VIATURA INT
)
BEGIN
DECLARE DisponibilidadeViatura INT;
DECLARE DisponibilidadeMotorista INT;
if exists (Select * from VIAGENS where ID_VIATURA = pID_VIATURA AND pDATAHORAINICIO between DATAHORAINICIO and DATAHORAFINAL )
set DisponibilidadeViatura = 0
else
set DisponibilidadeViatura = 1
if exists (Select * from VIAGENS where ID_MOTORISTA = pID_MOTORISTA AND pDATAHORAINICIO between DATAHORAINICIO and DATAHORAFINAL )
set DisponibilidadeMotorista = 0
else
set DisponibilidadeMotorista = 1
if (DisponibilidadeViatura = 1 and DisponibilidadeMotorista = 1)
INSERT INTO VIAGENS (IDVIAGENS, CIDADE, DATAHORAINICIO, DATAHORAFINAL, COR, CEP, RUA, NUMERO, BAIRRO, ESTADO, DESCRICAO, ID_DADOSPESSOAS, ID_MOTORISTA, ID_VIATURA)
VALUES (NULL,pCIDADE, pDATAHORAINICIO, pDATAHORAFINAL, pCOR, pCEP, pRUA, pNUMERO, pBAIRRO, pESTADO, pDESCRICAO, pID_DADOSPESSOAS, pID_MOTORISTA, pID_VIATURA);
else
Select 'Motorista ou Viatura indisponível na data/hora selecionada.' as 'Error';
END
$
E o erro que está aparecendo é o seguinte
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set DisponibilidadeViatura = 0
else
set DisponibilidadeViatura = 1
if exists (S' at line 23
Pergunta
MauMaster
Olá pessoal, estou em um semestre onde apresento um trabalho em banco de dados, sei que a procedure que estou cirando ficaria melhor na aplicação, porém preciso apresentar somente o banco de dados, um amigo me ajudou mas ele fez a logica em sql, tentei converter para MYSQl porém está dando erro, mostrarei a procecure e o erro, se precisarem posso postar também as tabelas, agradece qualquer ajuda estou desesperado.
Alias a ideia da procedure é analisar se a viatura e o motorista e o horário estão disponíveis para cadastrar uma nova viagem, se não estiverem, volta um ERRO se estiverem liberado fazemos o INSERTna tabela.
CREATE PROCEDURE ADICIONAR_VIAGEM99( IN pIDVIAGENS INT , IN pCIDADE VARCHAR(25) , IN pDATAHORAINICIO DATETIME , IN pDATAHORAFINAL DATETIME , IN pCOR VARCHAR(15) , IN pCEP CHAR(9) , IN pRUA VARCHAR(30), IN pNUMERO VARCHAR(8) , IN pBAIRRO VARCHAR(25) , IN pESTADO CHAR(2) , IN pDESCRICAO VARCHAR(200), IN pID_DADOSPESSOAS INT, IN pID_MOTORISTA INT, IN pID_VIATURA INT ) BEGIN DECLARE DisponibilidadeViatura INT; DECLARE DisponibilidadeMotorista INT; if exists (Select * from VIAGENS where ID_VIATURA = pID_VIATURA AND pDATAHORAINICIO between DATAHORAINICIO and DATAHORAFINAL ) set DisponibilidadeViatura = 0 else set DisponibilidadeViatura = 1 if exists (Select * from VIAGENS where ID_MOTORISTA = pID_MOTORISTA AND pDATAHORAINICIO between DATAHORAINICIO and DATAHORAFINAL ) set DisponibilidadeMotorista = 0 else set DisponibilidadeMotorista = 1 if (DisponibilidadeViatura = 1 and DisponibilidadeMotorista = 1) INSERT INTO VIAGENS (IDVIAGENS, CIDADE, DATAHORAINICIO, DATAHORAFINAL, COR, CEP, RUA, NUMERO, BAIRRO, ESTADO, DESCRICAO, ID_DADOSPESSOAS, ID_MOTORISTA, ID_VIATURA) VALUES (NULL,pCIDADE, pDATAHORAINICIO, pDATAHORAFINAL, pCOR, pCEP, pRUA, pNUMERO, pBAIRRO, pESTADO, pDESCRICAO, pID_DADOSPESSOAS, pID_MOTORISTA, pID_VIATURA); else Select 'Motorista ou Viatura indisponível na data/hora selecionada.' as 'Error'; END $
E o erro que está aparecendo é o seguinte
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set DisponibilidadeViatura = 0 else set DisponibilidadeViatura = 1 if exists (S' at line 23
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.