Oracle - Estructura PL/SQL

 
Vista:

Estructura PL/SQL

Publicado por Laura Carvajal (4 intervenciones) el 29/11/2015 00:05:44
Hola a todos, un saludo.

Estoy algo desesperada porque me han dejado un proyecto en PL/SQL y nunca lo vimos en clases... yo uso es MS SQL y sigo en aprendizaje pero pues la exigencia es que debe ser en Oracle.

Me piden lo siguiente:

Desarrolla un procedimiento PL/SQL que actualice un record en la tabla libros cuando dicho libro es sacado de la biblioteca por un usuario. El procedimiento debe ejecutar las siguientes tareas:
1. El procedimiento acepta el ID del libro y el ID del usuario
2. Verificar que:
a. Exista un record en la tabla libros con el ID del libro
b. Que el libro no haya sido retirado por otro usuario
c. Que el usuario exista en la tabla de usuarios
Si alguna de esas condiciones falla debe mandar un mensaje correspondiente para cada caso.
3. Si el libro y usuario existe y si el libro está disponible, actualiza la tabla libros con los valores del ID de usuario y fecha actual del sistema.

He estado leyendo pero me gustaría me indicaran en qué debo enfocarme porque según leo debo trabajar con bloques, excepciones y demás u no estoy segura!!

Para el punto 1 creo que debo usar ACCEPT nombre_variable PROMPT "Mensaje para usuario ";

Estoy leyendo sobre la creación del procedimiento pero me siento totalmente perdida :(

Les agradezco su orientación sobre qué recursos usar!

Besos,

Laura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Estructura PL/SQL

Publicado por MAQC (5 intervenciones) el 30/11/2015 06:10:50
... como es que les dejan un proyecto en PL/SQL, sin haberlo visto en clase? o es un tema de investigación? ... en fin!
Lo primero que tienes que hacer es modelar la data. No te pongas a escribir código como loca. Desarrollar en Oracle no es colocar "Aceptar", como en Microsoft ...

Te recomiendo lo siguiente (aparte de leer un monton):
1.- crear 3 tablas, una de libros, de usuarios y otra de movimientos en biblioteca.
2.- maneja un id único por registro
2.- crea llaves foráneas entre la tabla movimientos con las otras dos, para mantener la consistencia de la data.
3.- Define cuales son tus parámetros de ingreso, para ello debes saber primero, que va a hacer el usuario que ejecute este procedure. Va a consultar un libro? va a solicitar un libro? o que?

... si me entendiste, envíame lo avanzado y te ayudo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Estructura PL/SQL

Publicado por Laura Carvajal (4 intervenciones) el 02/12/2015 02:25:10
Hola... he comentado abajo algo de lo que me habías recomendado hacer para trabajar el procedimiento. Tu orientación ha sido de mucha ayuda... gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Estructura PL/SQL

Publicado por Luis (235 intervenciones) el 01/12/2015 19:14:33
Hola laura, si tienes la estructura de las tablas envíala para poder asesorarte con mayor detalle, si estuviste avanzando envía los mensajes de error que te salen para orientarte.


Saludos

luis pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Estructura PL/SQL

Publicado por Laura Carvajal (4 intervenciones) el 02/12/2015 02:20:21
Gracias MAQC y Luis Pablo por sus recomendaciones... efectivamente he estado trabajando en la creación de las tablas y no he tenido problema... Les dejo la estructura de mis tablas y les explico un poco

create table Autores (A_ID int primary key, Nombre_A char(25) NOT NULL);

create table Usuarios (ID int primary key,Nombre_U char(25) NOT NULL,Telefono char (15));

create table Libros (ID integer primary key,Titulo char(25) NOT NULL, U_ID int, cko_date date, foreign key(U_ID) References Usuarios(ID));

create table Libros_Autores (Bo_ID int,Au_ID int,primary key(Bo_ID,Au_ID),foreign key(Bo_ID) References Libros(ID),foreign key(Au_ID) References Autores(A_ID));

Lo que hice es como una mini biblioteca... tengo tablas para autores, usuarios, libros y una para enlazar los autores de los libros. Creo que está normalizado. En la tabla libros llevo el control del usuario que saca un libro y la fecha en que lo saca. Ya tengo algunos datos de prueba con las tablas.

He leído que en el caso de PL/SQL es como un procedimiento estructurado lo que debo crear. Puedo leer las dos variables del usuario que en este caso sería el ID del libro a sacar y el ID del usuario. Estoy usando la siguiente instrucción para ello:

ACCEPT id_libro PROMPT "Introduzca ID del libro: ";
ACCEPT id_usuario PROMPT "Introduzca ID del usuario: ";

Creo que estas dos variables son definidas en la sentencia pero no sé dónde digo que son de tipo integer.
Debe entonces haber un bloque que incluya un juego de IF? para verificar que los datos estén en las tablas

A esto me refiero:
Begin
/* cuerpo del bloque
End;

Por cierto, estoy encantada con el Oracle!!

Les agradezco la orientación que me han dado hasta ahora... debo ahora verificar que los valores existan en las tablas correspondientes supongo, pero eso he de incluirlo en los IF then else (supongo...)

Lo que preguntaba MAQC... el procedimiento es para que usuario registre la salida de un libro. Verificaré que el libro y usario exsita y luego si la fecha es NULL entonces puedo hacer el update respectivo en mi tabla libros.

Gracias de nuevo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Estructura PL/SQL

Publicado por Luis (235 intervenciones) el 02/12/2015 19:15:36
Hola Laura, según tu estructura de tablas y de lo que comentas que seria como una minibiblioteca, creo que te falta de finir tablas:


Autor (tabla maestra de autores)
Libro (tabla maestra de libros, un libro le pertenece a 1 solo autor)
usuarios(tabla maestra de usuarios de la biblioteca)
Reservas( Registro de reserva de un libro por un usuario ).

Veo que defines las tablas:

libros_autores : un mismo libro puede ser escrito por muchos autores?

Recomendación: Antes de desarrollar la BD debe estar bien modelada según los requerimientos del caso que te piden, si la BD no está bien modelada vas a tener que programar mas y hasta hacer artificios para obtener los datos que deseas.

Por lo demas que pides como realizar, voy a leer lo que pides y te mando los pasos que tienes que seguir, te mando pequeños ejemplos para los adecues a lo que quieres.

Saludos

Luis pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar