SQL - Insertar datos en PL/SQL

 
Vista:
sin imagen de perfil

Insertar datos en PL/SQL

Publicado por Sara (2 intervenciones) el 01/03/2018 08:58:42
Buenos días, estoy aprendiendo pl sql y estoy un poco frita en este tema jeje.

Me piden crear un procedimiento CREAR_HABITACIONES (de un hotel) que inserte todas las filas de una tabla HABITACIONES.

El hotel dispone de 12 plantas, en cada planta de la 1 a la 11 hay 20 habitaciones dobles y 5 individuales (25 en total en cada planta), y en la planta 12 hay 8 suites numeradas de la 1 a la 8.

También dice que el procedimiento se debería poder llamar varias veces así que conviene eliminar habitaciones al inicio del procedimiento.

Si pudiérais ayudarme por favor os lo agradecería. Mil gracias!!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Insertar datos en PL/SQL

Publicado por Leonardo Josué (1173 intervenciones) el 01/03/2018 15:33:56
Hola Sara:

Puedes preguntarle a San Google sobre el uso de CICLOS y CONDICIONES en PL-SQL. Una vez que sepas esto, trata de armar lo que te piden, en realidad se trata precisamente de eso, de anida CICLOS y CONDICIONES.

Si tienes problemas para lograr el Store Procedure, entonces posteas el código que intentaste hacer y con gusto te ayudamos a completar yYo corregir lo que haga falta.

Saludos
Leo.
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
sin imagen de perfil

Insertar datos en PL/SQL

Publicado por Sara (2 intervenciones) el 02/03/2018 09:34:35
Este es el código que hice, a ver qué tal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
create or replace PROCEDURE CREAR_HABITACIONES
IS
    HABITACION VARCHAR2(2);
    PISO NUMBER(1);
    TIPO VARCHAR2(12);
BEGIN
    DELETE FROM HABITACIONES;
    FOR I IN 1..12 LOOP
        PISO := I;
        IF I <= 11 THEN
            FOR J IN 1..25 LOOP
                HABITACION := J;
                IF J <= 20 THEN
                    HABITACION := 'Doble';
                ELSIF J > 20 THEN
                    HABITACION := 'Individual';
                END IF;
                INSERT INTO HABITACIONES VALUES (PISO, HABITACION, TIPO);
            END LOOP;
        ELSIF I >= 11 THEN
            FOR  J IN 1..8 LOOP
                HABITACION := J;
                TIPO := 'Suite';
                INSERT INTO HABITACIONES VALUES (PISO, HABITACION, TIPO);
            END LOOP;
        END IF;
    END LOOP;
END;
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Insertar datos en PL/SQL

Publicado por Leonardo Josué (1173 intervenciones) el 02/03/2018 15:45:49
Hola Sara:

De entrada luce bien, sólo cuidado con los intervalos en el IF... para la variable I,

Por un lado tienes I <= 11 y por otro lado I >= 11 (cuando I = 11 entonces se cumplen ambas condiciones).

En este caso creo que no te afecta, porque entraría por el primer IF que es el correcto, pero trata de que cuando anides condiciones estas sean mutuamente excluyentes.

Saludos
Leo.
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