tenho uma estrutura de tabelas que precisa de criar uma procedure que faça a seguinte inserção de dados através de uma procedure:
Primeiro Criando as Tabelas
CREATE TABLE `faculdade`.`alunos` (
`pk_aluno` int(11) NOT NULL AUTO_INCREMENT,
`nm_matricula` int(11) NOT NULL,
`ds_aluno` varchar(100) NOT NULL,
`ds_cpf` varchar(20) NOT NULL,
`ds_end` varchar(100) NOT NULL,
PRIMARY KEY (`pk_aluno`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
CREATE TABLE `faculdade`.`docentes` (
`pk_docente` int(11) NOT NULL AUTO_INCREMENT,
`ds_docente` varchar(100) NOT NULL,
`ds_cpf` varchar(20) NOT NULL,
`ds_end` varchar(100) NOT NULL,
PRIMARY KEY (`pk_docente`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
CREATE TABLE `faculdade`.`disciplinas` (
`pk_disciplina` int(11) NOT NULL AUTO_INCREMENT,
`ds_disciplina` varchar(100) NOT NULL,
`ds_cargahoraria` varchar(10) NOT NULL,
`cd_disciplina` int(11) NOT NULL,
`fk_docente` int(11) NOT NULL,
PRIMARY KEY (`pk_disciplina`),
KEY `docentesxdisc` (`fk_docente`),
CONSTRAINT `docentesxdisc` FOREIGN KEY (`fk_docente`) REFERENCES `docentes` (`pk_docente`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
CREATE TABLE `faculdade`.`alunosxdisciplinas` (
`pk_alunoxdiscplina` int(11) NOT NULL AUTO_INCREMENT,
`fk_aluno` int(11) NOT NULL,
`fk_disciplina` int(11) NOT NULL,
PRIMARY KEY (`pk_alunoxdiscplina`),
KEY `alunosxdisc` (`fk_aluno`),
KEY `disciplinasxaluno` (`fk_disciplina`),
CONSTRAINT `alunosxdisc` FOREIGN KEY (`fk_aluno`) REFERENCES `alunos` (`pk_aluno`) ON DELETE CASCADE,
CONSTRAINT `disciplinasxaluno` FOREIGN KEY (`fk_disciplina`) REFERENCES `disciplinas` (`pk_disciplina`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1;
INSERT INTO `faculdade`.`alunos` VALUES (1,12984,'Paulo Roberto','123','Rua Otávio Mangabeira'),
(2,12893,'Claudio José','321','Rua ACM'),
(3,12892,'Tatiane Dantas','456','Rua das Ameixas'),
(4,12891,'Gustavo','567','Rua Dom Pedro 2º');
INSERT INTO `faculdade`.`docentes` VALUES (1,'Rodrigo Pessoa','987','Rua das Acácias'),
(2,'Francisco José','231','Caminho 5 Casa 1'),
(3,'Giliard Ramos','312','Alameda dos Camelôs'),
(4,'Fernando Pessoa','321','Rua 5 de Outubro'),
(5,'João Dávila','8796','Avenida Santos Dumont');
INSERT INTO `faculdade`.`disciplinas` VALUES (1,'Ciências','60hs',3456,1),
(2,'Matemática','60hs',3457,2),
(3,'Português','60hs',3458,3),
(4,'História','30hs',3459,4),
(5,'Estudos Sociais','30hs',3460,1),
(6,'Educação Moral e Cívica','30hs',3461,2);
Agora a Sintaxe que vai para dentro da procedure
SELECT pk_aluno INTO @aluno
FROM alunos
WHERE ds_aluno = des_aluno;
SELECT pk_disciplina INTO @disciplina
FROM disciplinas
WHERE ds_disciplina = des_disciplina;
IF @aluno IS NULL THEN BEGIN
INSERT INTO alunos VALUES(null, des_aluno);
SELECT MAX(pk_aluno) INTO @aluno
FROM alunos;
END;
UPDATE alunosxdisciplinas SET fk_aluno = @aluno WHERE fk_disciplina = @disciplina;
Então, gostaria de saber se a estrutura do IF está correta, pois testando aqui apresenta uma mensagem de erro no UPDATE
Abraços para todo mundo e desde já obrigado pela atenção!
Pergunta
btolinux
Olá pessoal e Desde já obrigado
tenho uma estrutura de tabelas que precisa de criar uma procedure que faça a seguinte inserção de dados através de uma procedure:
Primeiro Criando as Tabelas
Agora a Sintaxe que vai para dentro da procedureEntão, gostaria de saber se a estrutura do IF está correta, pois testando aqui apresenta uma mensagem de erro no UPDATE
Abraços para todo mundo e desde já obrigado pela atenção!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados