Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Declaracin %TYPE
%TYPE define una variable o constante escalar a partir del tipo de otro identificador o columna de una tabla Declare car caracter %TYPE; descripcion articulos.descrip %TYPE;
Ejemplo
DECLARE -- declare variables using %TYPE attribute empid employees.employee_id%TYPE; emplname employees.last_name%TYPE; BEGIN empid := 100301; emplname := 'Patel'; DBMS_OUTPUT.PUT_LINE(Numero de empleado: ' || empid); DBMS_OUTPUT.PUT_LINE(Nombre del Empleado: ' || emplname); END;
Using %ROWTYPE
%ROWTYPE define una variable tupla a partir de otra variable tupla o del nombre de una relacin.
ejemplo
DECLARE emp_rec employees%ROWTYPE; BEGIN SELECT * INTO emp_rec FROM EMPLOYEES WHERE employee_id = 120; DBMS_OUTPUT.PUT_LINE(Salario, Nombre del Empleado y fecha de contrato: ' || emp_rec.salary || ' ' || emp_rec.last_name || ' ' || emp_rec.Hire_date); END;
Condicional With IF-THEN Sentencia Condicional With the CASE Control Interactivo With LOOPs Control Secuencial With GOTO
IF THEN
IF expresin_lgica THEN intrucciones_PL/SQL;
Ejemplo
SET SERVEROUTPUT ON DECLARE Nombre Varchar2(25); sal NUMBER(8,2); bonus NUMBER(6,2); hiredate DATE; empid NUMBER(6) := &x; //// ojo hay que definirlo en IE BEGIN SELECT last_name, salary, hire_date INTO Nombre, sal, hiredate FROM employees WHERE employee_id = empid; IF hiredate > ('01/01/90') THEN bonus := sal/20; DBMS_OUTPUT.PUT_LINE('Bonus para el empleado: ' || Nombre || ' con ID ' || empid ||' es: '||bonus ); END IF; END;
IF-THEN-ELSEIF-ELSE
[ELSIF expresin_lgica THEN intrucciones_PL/SQL;] [ELSE intrucciones_PL/SQL;] END IF;
ejemplo
DECLARE bonus NUMBER(6,2); empid NUMBER(6) := 120; hiredate DATE; BEGIN SELECT hire_date INTO hiredate FROM employees WHERE employee_id = empid; IF hiredate > ('01/01/98') THEN bonus := 500; ELSIF hiredate > ('01/01/96') THEN bonus := 1000; ELSE bonus := 1500; END IF; DBMS_OUTPUT.PUT_LINE('El Bono para el empleado : ' || empid || ' es: ' || bonus ); END;
Construya un bloque plsql que le permita obtener el suelto total de un empleado cualquiera: (salario + comisin)
Si este tiene mas de 60 meses trabajando para la empresa se le aade un bono de 3000 Si este tiene hasta 60 meses trabajando para la empresa se le aade un bono de 1000 Si este tiene hasta 30 meses trabajando para la empresa se le aade un bono de 500 Si tiene menos de 18 meses simplemente se le extender un mensaje de agradecimiento
Ejemplo
DECLARE grade CHAR(1); BEGIN grade := '&X'; CASE grade WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent'); WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good'); WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Good'); WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair'); WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor'); ELSE DBMS_OUTPUT.PUT_LINE('No such grade'); END CASE;
Para un empleado cualquiera se desea saber el sueldo que tendra si se quiere practicar un aumento basado en lo siguiente: Si es ST_MAN y trabaja mas de 6 meses un aumento de 350 soles Si es SA_REP y trabaja mas de 12 meses un aumento de 500 soles Si es IT_PROG y trabaja mas de 15 meses un aumento de 700 soles Si es HR_REP y trabaja mas de 20 meses un aumento de 100 soles Si es manager de algn empleado y gana menos que el promedio de los dems manager un aumento de 1500 soles De lo contrario solo un bono de 100 soles.