Documentos de Académico
Documentos de Profesional
Documentos de Cultura
END;
----------------------------------------------------------------------
Crea el Tipo USUARIO
----------------------------------------------------------------------
CREATE OR REPLACE TYPE PUSUARIO AS OBJECT
( nombre varchar2(20),
credito number,
edad numeric,
CONSTRUCTOR FUNCTION PUSUARIO RETURN self as RESULT,
member procedure visualizar(pel in out PELICULA),
member procedure anadirCredito(cant int)
)
----------------------------------------------------------------------
Crea el Body de USUARIO
----------------------------------------------------------------------
CREATE OR REPLACE
TYPE BODY PUSUARIO AS
END visualizar;
END anadirCredito;
END;
----------------------------------------------------------------------
Crea las Tablas para meter los datos
----------------------------------------------------------------------
create table tPUSUARIO of PUSUARIO;
create table tPELICULA of tPELICULA;
create table tALQUILER (
id int primary key,
p PELICULA,
u PUSUARIO,
fecha date);
----------------------------------------------------------------------
----------------------------------------------------------------------
set SERVEROUTPUT ON;
declare
u PUSUARIO:=new PUSUARIO();
p PELICULA:= new PELICULA();
begin
select * into p.titulo, p.duracion, p.todospublicos from tPELICULA tp where
tp.titulo='XXXX';
select * into u.nombre, u.credito, u.edad from tPUSUARIO tu where
tu.nombre='XXXX';
DBMS_OUTPUT.PUT_LINE(u.nombre||' , '||u.credito);
DBMS_OUTPUT.PUT_LINE(p.titulo||' , '||p.duracion);
u.visualizar(p);
----------------------------------------------------------------------
----------------------------------------------------------------------
-----Crear un procedimiento que pasada el título de la película-------
--------me devuelva los usuarios que la han visualizado.--------------
----------------------------------------------------------------------
----------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE USUARIOSVERPELICULAS
nombre IN VARCHAR2
) AS
BEGIN
select ta.u.nombre from tALQUILER ta where ta.p.titulo = nombre;
DBMS_OUTPUT.PUT_LINE(ta.u.nombre);
END USUARIOSVERPELICULAS;
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE obtener_usuarios_visualizacion(p_titulo IN VARCHAR2) IS
BEGIN
FOR usuarios_rec IN (
SELECT u.nombre
FROM tPUSUARIO u
JOIN tALQUILER a ON u.nombre = a.u.nombre
JOIN tPELICULA p ON a.p.titulo = p.titulo
WHERE p.titulo = p_titulo
) LOOP
DBMS_OUTPUT.put_line(usuarios_rec.nombre);
END LOOP;
END;
----------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE obtener_usuarios_visualizacion(p_titulo IN VARCHAR2) IS
CURSOR usuarios_cur IS
SELECT u.nombre
FROM tPUSUARIO u
JOIN tALQUILER a ON u.nombre = a.u.nombre
JOIN tPELICULA p ON a.p.titulo = p.titulo
WHERE p.titulo = p_titulo;
v_usuario tPUSUARIO.nombre%TYPE;
BEGIN
OPEN usuarios_cur;
LOOP
FETCH usuarios_cur INTO v_usuario;
EXIT WHEN usuarios_cur%NOTFOUND;
DBMS_OUTPUT.put_line(v_usuario);
END LOOP;
CLOSE usuarios_cur;
END;