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

(Resolvido) Dúvida com Procedure


Ana Paula Nascimento

Pergunta

Olá Galera,

Sou iniciante em MySQL e estou tentando criar uma procedure de

inserção de um filme, mas esta dando erros de sintaxe, alguém sabe me

ajudar???, segue as tabelas criadas no banco e a procedure q estou

tentando criar:

CREATE TABLE sch_locadorafilme.Categoria (

CodCat BIGINT NOT NULL AUTO_INCREMENT

, NomeCat VARCHAR(60)

, PRIMARY KEY (CodCat)

);

A tabela Filme recebe referencia da Tabela Categoria

CREATE TABLE sch_locadoraFilme.Filme (

CodFilme BIGINT NOT NULL AUTO_INCREMENT

, NomeFilme VARCHAR(30)

, DuracaoFilme VARCHAR(15)

, SinopseFilme VARCHAR(90)

, SituacaoFilme VARCHAR(2)

, FilmeCodCat BIGINT NOT NULL

, PRIMARY KEY (CodFilme)

, INDEX (FilmeCodCat)

, CONSTRAINT FK_Filme_1 FOREIGN KEY (FilmeCodCat)

REFERENCES sch_locadorafilme.Categoria (CodCat)

);

// Inserção da Categoria - Funciona normalmente//

DELIMITER $$

CREATE PROCEDURE InserirCategoria (v_NomeCat varchar(60))

BEGIN

INSERT INTO Categoria (NomeCat)

VALUES (v_NomeCat);

END $$

DELIMITER ;

// Inserção de um Filme// - Essa já não funciona ....

DELIMITER $$

CREATE PROCEDURE InserirFilme (v_NomeFilme varchar(30), v_DuracaoFilme

varchar(15),

v_SinopseFilme varchar(90),

v_SituacaoFilme varchar(2),

v_FilmeCodCat BIGINT)

BEGIN

declare verificaCategoria BIGINT;

SELECT CodCat FROM Categoria where CodCat = v_FilmeCodCat into

verificaCategoria;

IF verificaCategoria % null

INSERT INTO Filme (NomeFilme, DuracaoFilme, SinopseFilme,

SituacaoFilme, FilmeCodCat)

VALUES (v_NomeFilme, v_DuracaoFilme, v_SinopseFilme,

v_SituacaoFilme, v_FilmeCodCat);

END $$

DELIMITER ;

alguém sabe o que estou fazendo de errado nesta PROCEDURE?????

Agradeço a todos

[ ]'s

Ana Paula

O erro que está ocorrendo é o seguinte:

Script line: 3 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 '' at line 9

Script line: 3 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 '' at line 9

Preciso usar as procedures pois é uma exigencia do trabalho da faculdade, já li diversas apostilas do MySQL, mas não consegui descobrir o que estou fazendo de errado.

Se puderem me ajudar eu agradeço muito.!!!!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, Ana Paula!

Você cometeu os seguintes erros:

Todo IF termina com End IF;

Para verificar se algo é nulo use IS NULL e não % null

Ao final da condição de um IF use THEN

Veja o código corrigido abaixo:

DELIMITER $$;

CREATE PROCEDURE InserirFilme (v_NomeFilme varchar(30), v_DuracaoFilme
varchar(15),
v_SinopseFilme varchar(90),
v_SituacaoFilme varchar(2),
v_FilmeCodCat BIGINT)
BEGIN
declare verificaCategoria BIGINT;
SELECT CodCat FROM Categoria where CodCat = v_FilmeCodCat into
verificaCategoria;
IF verificaCategoria is null then
   INSERT INTO Filme (NomeFilme, DuracaoFilme, SinopseFilme,
   SituacaoFilme, FilmeCodCat)
   VALUES (v_NomeFilme, v_DuracaoFilme, v_SinopseFilme,
   v_SituacaoFilme, v_FilmeCodCat);
end if;
END $$

DELIMITER;$$

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, Ana Paula!

Você cometeu os seguintes erros:

Todo IF termina com End IF;

Para verificar se algo é nulo use IS NULL e não % null

Ao final da condição de um IF use THEN

Veja o código corrigido abaixo:

DELIMITER $$;

CREATE PROCEDURE InserirFilme (v_NomeFilme varchar(30), v_DuracaoFilme
varchar(15),
v_SinopseFilme varchar(90),
v_SituacaoFilme varchar(2),
v_FilmeCodCat BIGINT)
BEGIN
declare verificaCategoria BIGINT;
SELECT CodCat FROM Categoria where CodCat = v_FilmeCodCat into
verificaCategoria;
IF verificaCategoria is null then
   INSERT INTO Filme (NomeFilme, DuracaoFilme, SinopseFilme,
   SituacaoFilme, FilmeCodCat)
   VALUES (v_NomeFilme, v_DuracaoFilme, v_SinopseFilme,
   v_SituacaoFilme, v_FilmeCodCat);
end if;
END $$

DELIMITER;$$

Olá Denis,

Os erros erão estes mesmo, muito obrigado pela ajuda viu!!!Agora funcionou corretamente, valeu mesmo!!!!

[ ]'s

Ana Paula

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...