Advertisement
Guest User

Untitled

a guest
May 24th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. uses BDP3G06;
  2.  
  3. CREATE PROC removeAutor
  4. @Nome nvarchar(200)
  5. AS
  6. BEGIN TRAN
  7. TRY
  8. -- remove da tabela Actor
  9. DELETE FROM A FROM Actor A
  10. INNER JOIN Pessoa P ON A.RefIdPessoa = P.IDPessoa
  11. WHERE P.Nome = @Nome
  12.  
  13. -- remove da tabela pessoa apenas se este nao for referenciado em mais nenhum sitio
  14. DELETE FROM Pessoa
  15. WHERE Nome = @Nome AND IDPessoa NOT IN
  16. (
  17. SELECT RefIdPessoa FROM Realizador
  18. UNION
  19. SELECT RefIdPessoa FROM Autor
  20. UNION
  21. SELECT RefIdPessoa FROM Interprete
  22. )
  23.  
  24. COMMIT
  25. CATCH
  26. ROLLBACK;
  27.  
  28. CREATE PROC adicionaActorAoFilme
  29. @Nome nvarchar(200)
  30. @Titulo nvarchar(250)
  31. AS
  32. DECLARE @ActorID int
  33. DECLARE @ObraID int
  34. DECLARE @OrdemNext int
  35.  
  36. BEGIN TRAN
  37. TRY
  38. -- verificar se a pessoa nao existe na bd e se nao existir
  39. IF EXISTS (SELECT IDPessoa FROM Pessoa WHERE Nome = @Nome)
  40. BEGIN
  41. -- se existir extrai IDPessoa desta
  42. SET @ActorID = SELECT IDPessoa FROM Pessoa WHERE Nome = @Nome
  43. END
  44. ELSE
  45. BEGIN
  46. -- insere a "nova pessoa" na tabela Pessoa extrai o IDPessoa desta
  47. INSERT INTO Pessoa (Nome) VALUES (@Nome)
  48. SET @ActorID = @@IDENTITY
  49. END
  50.  
  51. -- extrai o ID da obra requerida e a ordem do proximo actor a adicionar
  52. SET @ObraID = SELECT IDObra FROM Obra WHERE Titulo = @Titulo
  53. SET @OrdemNext = (SELECT MAX(Ordem) FROM Actor WHERE RefIDObra = @ObraID) + 1
  54.  
  55. -- insere a "nova pessoa" como actor do filme da obra anterior
  56. INSERT INTO Actor (RefIDPessoa, RefIDObra, Ordem) VALUES (@ActorID, @ObraID, @OrdemNext)
  57.  
  58. COMMIT
  59. CATCH
  60. ROLLBACK;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement