Advertisement
Guest User

Untitled

a guest
May 24th, 2018
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. --PRIMERO EJECUTAR SOLO LA CABECERA
  2.  
  3. create or replace PACKAGE GESTION_VIDEOS
  4. AS
  5. PROCEDURE SUBIR_VIDEO (CANAL IN VARCHAR2, TITLE IN VARCHAR2, DESCRIPTION IN VARCHAR2, VIDEO IN BLOB);
  6. PROCEDURE REPRODUCIR_VIDEO (VIDEO_ID IN NUMBER , DURACION IN NUMBER);
  7. END;
  8.  
  9. --/////////////////////
  10. --Luego ejecutar el cuerpo
  11. --/////////////////////
  12.  
  13. create or replace PACKAGE BODY GESTION_VIDEOS
  14. AS
  15.  
  16. PROCEDURE SUBIR_VIDEO (CANAL IN VARCHAR2, TITLE IN VARCHAR2 , DESCRIPTION IN VARCHAR2 , VIDEO IN BLOB ) AS
  17.  
  18. video_owner_id mitubo.usuarios.id%TYPE;
  19. cid_owner mitubo.canal.cid%TYPE;
  20. vid_number mitubo.videos.vid%TYPE;
  21.  
  22. BEGIN
  23. vid_number := videos_id_seq.NEXTVAL;
  24.  
  25. SELECT usu.id INTO video_owner_id FROM mitubo.usuarios usu WHERE UPPER(usu.alias) = UPPER(USER);
  26. IF canal IS NOT NULL THEN
  27. SELECT cid INTO cid_owner FROM mitubo.canal WHERE UPPER(canal) = UPPER(nombre);
  28.  
  29. FOR sub IN (
  30. SELECT usuarios_id FROM mitubo.suscripciones WHERE UPPER(canal_cid) = UPPER(cid_owner)
  31. ) LOOP
  32. --dbms_output.put_line(sub.usuarios_id);
  33. INSERT INTO mitubo.not_suscriptor VALUES (notif_id_seq.NEXTVAL,'N', null, sub.usuarios_id, vid_number, 1, null);
  34. END LOOP;
  35. END IF;
  36.  
  37. INSERT INTO mitubo.videos VALUES (vid_number, cid_owner, null, title, description, null, null, null, null, null,
  38. SYSDATE, null, null, video_owner_id, video);
  39.  
  40. END SUBIR_VIDEO;
  41.  
  42. PROCEDURE REPRODUCIR_VIDEO (VIDEO_ID IN NUMBER , DURACION IN NUMBER ) AS
  43.  
  44. player_id mitubo.usuarios.id%TYPE;
  45. player_saldo mitubo.usuarios.saldo%TYPE;
  46. video_length mitubo.videos.duracion_seg%TYPE;
  47. video_precio mitubo.videos.precio%TYPE;
  48. cuenta_videos NUMBER;
  49. cuenta_notif NUMBER;
  50. ex_visionado_no_autorizado EXCEPTION;
  51.  
  52. BEGIN
  53. SELECT usu.id, usu.saldo INTO player_id, player_saldo FROM mitubo.usuarios usu WHERE UPPER(usu.alias) = UPPER(USER);
  54. SELECT duracion_seg, precio INTO video_length, video_precio FROM mitubo.videos WHERE video_id = vid;
  55. SELECT COUNT(*) INTO cuenta_videos FROM mitubo.historial_videos WHERE UPPER(usuarios_id) = UPPER(player_id) AND video_id = videos_vid;
  56. SELECT COUNT(*) INTO cuenta_notif FROM mitubo.not_suscriptor WHERE UPPER(usuarios_id) = UPPER(player_id) AND video_id = videos_vid;
  57.  
  58. --comprobar si el video es de pago
  59. IF video_precio IS NOT NULL AND video_precio > player_saldo THEN
  60. RAISE ex_visionado_no_autorizado;
  61. END IF;
  62.  
  63. IF cuenta_videos > 0 THEN
  64. --actualizar num visualizaciones del video
  65. UPDATE mitubo.videos
  66. SET visualizaciones = visualizaciones+1
  67. WHERE vid = video_id;
  68. --insertar el video en el historial
  69. IF duracion = video_length THEN
  70. INSERT INTO mitubo.historial_videos VALUES (SYSDATE, SYSDATE+((1/86400)*duracion), 100, player_id, video_id);
  71. ELSE
  72. INSERT INTO mitubo.historial_videos VALUES (SYSDATE, null, TRUNC((duracion/video_length)*100), player_id, video_id);
  73. END IF;
  74. END IF;
  75. --si existe notificacion de visualizacion de video, borrarla
  76. IF cuenta_notif > 0 THEN
  77. DELETE FROM mitubo.not_suscriptor WHERE (player_id = usuarios_id AND video_id = videos_vid);
  78. END IF;
  79.  
  80. EXCEPTION
  81. WHEN ex_visionado_no_autorizado THEN
  82. DBMS_OUTPUT.PUT_LINE
  83. ('Este usuario no tiene dinero suficiente para ver este video.');
  84.  
  85. END REPRODUCIR_VIDEO;
  86.  
  87. END GESTION_VIDEOS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement