Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. CREATE PROCEDURE prestar_libro
  2. @member_no INT, @title_no INT, @isbn INT, @copy_no INT, @due_date DATETIME
  3.  
  4. AS
  5. DECLARE @out_date DATETIME = GETDATE()
  6.  
  7. IF NOT EXISTS(SELECT * FROM member
  8. WHERE member_no=@member_no)
  9. BEGIN
  10. RAISERROR('El usuario especificado no existe.', 16, 11)
  11. RETURN 1
  12. END
  13. IF NOT EXISTS(SELECT * FROM copy1
  14. WHERE isbn=@isbn AND copy_no=@copy_no)
  15. BEGIN
  16. RAISERROR('El libro especificado no existe.', 16, 11)
  17. RETURN 1
  18. END
  19. IF(SELECT expr_date FROM adult
  20. WHERE member_no=@member_no) < GETDATE()
  21. BEGIN
  22. RAISERROR('La credencial del usuario ya expiró.', 16, 11)
  23. RETURN 1
  24. END
  25. IF(SELECT expr_date FROM adult, juvenile
  26. WHERE adult_member_no=@member_no AND juvenile.member_no=@member_no) < GETDATE()
  27. BEGIN
  28. RAISERROR('La credencial del usuario ya expiró.', 16, 11)
  29. RETURN 1
  30. END
  31. IF(SELECT SUM(fine_assessed) FROM loanhist
  32. WHERE member_no=@member_no) < 0
  33. BEGIN
  34. RAISERROR('El usuario presenta adeudos.', 16, 11)
  35. RETURN 1
  36. END
  37. IF(SELECT COUNT(*) FROM loan
  38. WHERE member_no=@member_no) >= 4
  39. BEGIN
  40. RAISERROR('El usuario tiene el máximo de libros que puede pedir.', 16, 11)
  41. RETURN 1
  42. END
  43. IF(SELECT loanable FROM item
  44. WHERE isbn=@isbn) = 'NO'
  45. BEGIN
  46. RAISERROR('El libro especificado no se puede prestar.', 16, 11)
  47. RETURN 1
  48. END
  49. IF EXISTS(SELECT * FROM loan
  50. WHERE isbn=@isbn AND member_no=@member_no)
  51. BEGIN
  52. RAISERROR('El préstamo que trata de dar de alta ya existe.', 16, 11)
  53. RETURN 1
  54. END
  55. IF(@out_date < GETDATE())
  56. BEGIN
  57. RAISERROR('La fecha del préstamo no puede ser menor que la fecha actual.', 16, 11)
  58. RETURN 1
  59. END
  60. IF(@due_date < GETDATE())
  61. BEGIN
  62. RAISERROR('La fecha de regreso no puede ser menor que la fecha actual.', 16, 11)
  63. RETURN 1
  64. END
  65. IF(SELECT on_loan FROM copy1
  66. WHERE isbn=@isbn AND copy_no=@copy_no) = 'SI'
  67. BEGIN
  68. RAISERROR('El libro ya se encuentra prestado a otro usuario.', 16, 11)
  69. RETURN 1
  70. END
  71. IF EXISTS(SELECT * FROM loan
  72. WHERE isbn=@isbn AND member_no=@member_no)
  73. BEGIN
  74. RAISERROR('El usuario específicado ya tiene una copia de este libro.', 16, 11)
  75. RETURN 1
  76. END
  77.  
  78. INSERT INTO loan VALUES(
  79. @isbn,
  80. @copy_no,
  81. @title_no,
  82. @member_no,
  83. @out_date,
  84. @due_date
  85. )
  86. IF(@@ERROR <> 0)
  87. BEGIN
  88. RAISERROR('Error al dar de alta el préstamo en la tabla loan.', 16, 11)
  89. RETURN 1
  90. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement