Advertisement
xlujiax

PROCEDURES RESTAURANTE

Oct 30th, 2018
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.00 KB | None | 0 0
  1. SET SERVEROUTPUT ON
  2. CREATE OR REPLACE PROCEDURE actualizaPorcentaje
  3. AS
  4. v_cod_tipCliente1 tipo_cliente.cod_tipoclien%TYPE;
  5. v_cod_tipCliente2 tipo_cliente.cod_tipoclien%TYPE;
  6. v_cod_tipCliente3 tipo_cliente.cod_tipoclien%TYPE;
  7. BEGIN
  8. v_cod_tipcliente1 := 1;
  9. v_cod_tipcliente2 := 2;
  10. v_cod_tipcliente3 := 3;
  11. FOR r_employees IN
  12.   (SELECT COD_TIPOCLIEN, DESCRIPCION, OFERTA
  13.    FROM TIPO_CLIENTE WHERE COD_TIPOCLIEN IN (v_cod_tipcliente1, v_cod_tipcliente2, v_cod_tipcliente3))
  14.    LOOP
  15.      IF (r_employees.COD_TIPOCLIEN = 1) THEN
  16.         DBMS_OUTPUT.put_line('Actualiza el descuento del 10%');
  17.         UPDATE TIPO_CLIENTE SET oferta = 10 WHERE COD_TIPOCLIEN = v_cod_tipCliente1;        
  18.      ELSIF(r_employees.COD_TIPOCLIEN = 2) THEN
  19.         DBMS_OUTPUT.put_line('Actualiza el descuento del 25%');
  20.         UPDATE TIPO_CLIENTE SET oferta = 25 WHERE COD_TIPOCLIEN = v_cod_tipCliente2;        
  21.      ELSE
  22.         DBMS_OUTPUT.put_line('No recibe actualizacion de descuento');
  23.         UPDATE TIPO_CLIENTE SET oferta = 0 WHERE COD_TIPOCLIEN = v_cod_tipCliente3;
  24.      END IF;
  25.    END LOOP;
  26.    COMMIT;
  27. END actualizaPorcentaje;
  28.  
  29. EXECUTE actualizaPorcentaje();
  30.  
  31. SET serveroutput ON
  32. CREATE OR REPLACE PROCEDURE frecdiariaclientes
  33. AS
  34. CURSOR c_cliente IS
  35.   SELECT COUNT(C.COD_CLIENTE) AS cant, T.DESCRIPCION
  36.   FROM TIPO_CLIENTE T join Cliente C
  37.   ON T.COD_TIPOCLIEN = C.COD_TIPOCLIEN
  38.   join Reserva R
  39.   ON R.cod_cliente = C.cod_cliente
  40.   WHERE (EXTRACT(MONTH FROM SYSDATE) = EXTRACT(MONTH FROM R.FECHA) AND EXTRACT(DAY FROM SYSDATE) = EXTRACT(DAY FROM R.FECHA))
  41.   GROUP BY T.DESCRIPCION;
  42.    r_cliente c_cliente%ROWTYPE;
  43.   BEGIN
  44.   OPEN c_cliente;
  45.   FETCH c_cliente INTO r_cliente;
  46.   WHILE (c_cliente%FOUND)
  47.     LOOP
  48.       EXIT WHEN c_cliente%NOTFOUND;
  49.       DBMS_OUTPUT.put_line ('Cantidad diaria: ' || r_cliente.cant || ' Del tipo de cliente: '|| r_cliente.DESCRIPCION);      
  50.       FETCH c_cliente INTO r_cliente;
  51.     END LOOP;    
  52.   CLOSE c_cliente;  
  53. END frecdiariaclientes;
  54.  
  55. EXECUTE frecdiariaclientes();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement