PL/SQL: Ejemplo Procedimientos Almacenados

El dia de hoy trabajaremos con un poco de procedimientos almacenados en Oracle: Este procedimiento esta hecho con la intencion de insertar 2000 numeros aleatorios del 0 al 10 en una tabla que contiene notas de examenes:

Lo primero que haremos sera crear nuestra tabla donde guardaremos la informacion:

/**CREACION DE TABLA**/
CREATE TABLE "NOTAS" (
    "NOTA_ID"         NUMBER NOT NULL ENABLE,
    "PRIMER_PARCIAL"  NUMBER,
    "SEGUNDO_PARCIAL" NUMBER,
    "EXAMEN_FINAL"    NUMBER,
    CONSTRAINT "NOTAS_PK" PRIMARY KEY ("NOTA_ID"));

Luego de esto procederemos a armar nuestro procedimiento, el cual no recibe ningun para metro ya que no es necesario, la logica es la siguiente: realizaremos 2000 INSERT y para esto utilizaremos un LOOP, y ya en nuestro INSERT generaremos numeros aleatorios con dbms_random.value(0,10) que mantiene valores entre 0 y 10, esta funcion puede devolver tanto numeros positivos como negarivos por es le haremos un ABS que obtiene el valor absoluto, y adicional haremos un TRUNC para que solo devuelva dos decimales.

/**CREACION DE PROCEDIMIENTO**/
CREATE OR REPLACE PROCEDURE INSERTA_NOTAS AS
BEGIN
  FOR i IN 1..2000 LOOP
      INSERT INTO NOTAS (NOTA_ID, PRIMER_PARCIAL, SEGUNDO_PARCIAL, EXAMEN_FINAL)
      SELECT (SELECT NVL(MAX(NOTA_ID),0)+1 FROM NOTAS),
              trunc(ABS(dbms_random.value(0,10)),2),
              trunc(ABS(dbms_random.value(0,10)),2),
              trunc(ABS(dbms_random.value(0,10)),2)
        FROM  dual;
 END LOOP;
 COMMIT;
END INSERTA_NOTAS;

Y al final solo mandamos a llamar nuestro procedimiento:

/**LLAMADA DEL PROCEDIMIENTO**/
BEGIN
  INSERTA_NOTAS();
END;

tal vez te pueda interesar.

recién salido del horno.

Recibe directo a tu correo todas nuestras novedades y las noticias más importantes. Actualmente, 9,225 usuarios registrados ya disfrutan de nuestro newsletter.

únete a la conversación.