Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Wuolah Free PLSQL Apuntes y Ejercicios
Wuolah Free PLSQL Apuntes y Ejercicios
Anónimo
DECLARE, zona de declaraciones, te sale abajo una zona para poner variables.
DBMS_OUTPUT.PUT_LINE(‘hola’), es un print
END; , acabar
Si quieres que se printee algo en la maquina antes de todo tienes que poner SET
SERVEROUTPUT ON
------
SET SERVEROUTPUT ON
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE('Hola mundo');
END;
-------
CREAR VARIABLES
----
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
BEGIN
END;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
---
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
BEGIN
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
SELECT SALAR INTO VSALAR FROM TEMPLE WHERE NUMEM=№
END;
& Esto es para ir metiendo parámetros en vez de en el código sino fuera como la foto de abajo
-------
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
VNOMEM TEMPLE.NOMEM%TYPE;
BEGIN
END;
Esto es el output
-----
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
IF<CONDICION> THEN
END;
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
EJEMPLO: Quiero lo mismo de antes solo que me printee algo si es mayor a 1000 el salario
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
VNOMEM TEMPLE.NOMEM%TYPE;
BEGIN
END IF;
END;
Ahora quiero que si tiene menos de 1000 de salario, se sume 500 a su salario
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
VNOMEM TEMPLE.NOMEM%TYPE;
BEGIN
ELSE
VSALAR:=VSALAR+500;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
END IF;
END;
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
/
Nombre y departamento del empleado que menos gana, si su salario es inferior al 10% del
salario que más gana, subirle el sueldo 100 pavets.
DECLARE
VNOMEM TEMPLE.NOMEM%TYPE;
VNOMDE TDEPTO.NOMDE%TYPE;
VSALAR TEMPLE.SALAR%TYPE;
VSALARM TEMPLE.SALAR%TYPE;
BEGIN
SELECT SALAR INTO VSALARM FROM TEMPLE WHERE SALAR=(SELECT MAX(SALAR) FROM
TEMPLE);
VSALARM=VSALARM*0.1;
IF VSALARM>VSALAR THEN;
VSALAR:=VSALAR+100;
END;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
LOOP
INSTRUCCIONES
If<condición> THEN
EXIT;
ENDIF;
INTRUCCIONES;
WHILE
WHILE<CONDICION> LOOP
INSTRUCCIONES;
END LOOP;
DECLARE
VNOMEM TEMPLE.NOMEM%TYPE;
VSALAR TEMPLE.SALAR%TYPE;
BEGIN
VSALAR:=VSALAR*1.1;
END LOOP;
END;
---
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Como hacer para que pueda sacar más de un dato, con un CURSOR:
- Declaramos el cursor
- Abrimos el cursor( OPEN C4)
- FETCH (Esto coge una de las filas y la mete en una variable), se hace un FETCH cada
vez, lo metes en una iteración.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Morfología
DECLARE
LOOP
PRINT(<VARIABLE>||<VARIABLE>)
END LOOP
CLOSE<NOMBRE CURSOR>
DECLARE
BEGIN
INSTRUCCIONES
END LOOP
PRINT;
Lo mismo que la última consulta pero para que salga más peña
DECLARE
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
VNOMEM TEMPLE.NOMEM%TYPE;
VSALAR TEMPLE.SALAR%TYPE;
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
BEGIN
OPEN C4;
LOOP
VSALAR:=VSALAR*1.1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(VNOMEM||VSALAR);
END LOOP;
CLOSE C4;
END;
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
BEGIN
VSALAR:=VSALAR+1000;
END;
DECLARE
VSALAR TEMPLE.SALAR%TYPE;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
END;
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
/
EJERCICIO
DECLARE
CURSOR C1 IS
WHERE NUMDE=&NUMDEP ;
VNUMDE TEMPLE.NUMDE%TYPE;
VSALAR TEMPLE.SALAR%TYPE;
VMEDIA TEMPLE.SALAR%TYPE;
BEGIN
IF AUX.SALAR<VMEDIA THEN
VSALAR:=AUX.SALAR*1.05;
UPDATE TEMPLE2
SET SALAR=VSALAR
WHERE NOMEM=AUX.NOMEM;
ELSE
DBMS_OUTPUT.PUT_LINE('SALARIO DE'||AUX.NOMEM||'SALARIO NO
ACTUALIZADO:'||VSALAR);
END IF;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
END;
PARA LOS EMPLEADOS CON MÁS DE DOS HIJOS, MOSTRAR SU NOMBRE Y DEP Y EN CASO DE
QUE SU SALARIO SEA INFERIOR A 1500 IGUALARLO CON EL SALARIO MEDIO DE TEMPLE.
DECLARE
CURSOR C1 IS
WHERE NUMHI>2;
VSALAR TEMPLE2.SALAR%TYPE;
VMEDIA TEMPLE2.SALAR%TYPE;
VNUMDE TEMPLE2.NUMDE%TYPE;
BEGIN
IF AUX.SALAR<1500 THEN
VSALAR:=VMEDIA;
END IF;
END LOOP;
END;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
PROCEDIMIENTOS
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
- ( Variables y cursores)
BEGIN
END;
EXECUTE EJEMPLO(100)
IS
CURSOR C1 IS
BEGIN
END LOOP;
END;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
IS
VSALAR TEMPLE.SALAR%TYPE;
VNUMDE TEMPLE.NUMDE%TYPE;
VMEDIA TEMPLE.SALAR%TYPE;
BEGIN
IF VSALAR<VMEDIA THEN
END IF;
END;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9354491