BASES DE DATOS ORACLE

http://www.redcientifica.com/oracle/


Administración y Optimización de Bases de Datos Oracle
Copyright 1999-2004 Manuel de la Herrán Gascón

Procedimientos PL/SQL

Ejercicio 1

Crear un procedimiento pl/sql que muestra los números desde el 1 hasta el valor pasado como parámetro

--Mostrar los números del 1 al parametro
CREATE OR REPLACE PROCEDURE mostrarNumeros1Ub (
  Ub number
) IS
  vCont number;
BEGIN
  -- vContamos de 1 a Ub
  vCont := 0;
  loop
    vCont := vCont + 1;
    exit when vCont > Ub;
    dbms_output.put_line('Iteración número ' || vCont);
  end loop;
END;
/
show errors
set serveroutput on;
EXEC mostrarNumeros1Ub(5);

Ejercicio 2

Modificar el procedimiento del Ejercicio 1 para que muestre números desde un valor inferior hasta uno superior con cierto salto

--Mostrar los números del Lb a Ub con un salto
CREATE OR REPLACE PROCEDURE mostrarNumerosLbUbStep (
  pLb    IN     number, 
  pUb    IN     number, 
  pStep  IN     number   DEFAULT   1
) IS
  vCont  number;
BEGIN
  -- contamos de pLb a pUb
  vCont := pLb-pStep;
  loop
    vCont := vCont + pStep;
    exit when vCont > pUb;
    dbms_output.put_line('Iteración número ' || to_char((vCont-pLb+pStep)/pStep));
  end loop;
END;
/
show errors
set serveroutput on;
EXEC mostrarNumerosLbUbStep(1990,1995,0.5);
EXEC mostrarNumerosLbUbStep(1990,1995,0.1);
EXEC mostrarNumerosLbUbStep(1990,1995,2);

Ejercicio 3

Modificar el procedimiento del Ejercicio 1 para que inserte los números en una tabla

--creación de objetos
create table numeros(numero number);
delete from numeros;
insert into numeros values(1);
insert into numeros values(2);
insert into numeros values(3);
--Mostrar los números del 1 al parametro
CREATE OR REPLACE PROCEDURE mostrarNumeros1Ub (
  Ub number
) IS
  vCont number;
BEGIN
  -- vContamos de 1 a Ub
  vCont := 0;
  loop
    vCont := vCont + 1;
    exit when vCont > Ub;
    insert into numeros values(vCont);
    --dbms_output.put_line('Iteración número ' || vCont);
  end loop;
END;
/
show errors
set serveroutput on;
EXEC mostrarNumeros1Ub(5);

Ejercicio 4

Corregir los errores de sintaxis en esta función

Esta función PL/SQL devuelve el número PI (3,141592653589793238462...)
calculado mediante el algoritmo que ideó John Wallis en 1665
           2     2     4     4     6     6     
PI = 2 * (--- * --- * --- * --- * --- * --- * ...) 
           1     3     3     5     5     7
CREATE FUNCTION piWallis(pIteraciones number) number AS
  vCont number
  vRet number
  vCont = 0
  vRet = 1
  loop
    vCont = vCont + 1;
    when vCont > pIteraciones exit loop;
    if (vCont % 2) = 0
      vRet := vRet * vCont / (vCont + 1);
    else
      vRet := vRet * (vCont + 1) / vCont;
    endif;
  end loop
  return (2 * vRet);
  END;
  /

Solución al ejercicio 4:

-- Esta función PL/SQL devuelve el número PI (3,141592653589793238462...)
-- calculado mediante el algoritmo que ideó John Wallis en 1665
--
--            2     2     4     4     6     6     
-- PI = 2 * (--- * --- * --- * --- * --- * --- * ...) 
--            1     3     3     5     5     7
--
CREATE OR REPLACE FUNCTION piWallis(pIteraciones number) RETURN number IS
  vCont number;
  vRet number;
BEGIN
  vCont := 0;
  vRet := 1;
  loop
    vCont := vCont + 1;
    exit when vCont > pIteraciones;
    if mod(vCont, 2) = 0 then
      vRet := vRet * vCont / (vCont + 1);
    else
      vRet := vRet * (vCont + 1) / vCont;
    end if;
  end loop;
  return (2 * vRet);
END;
/
show errors
var x number;
EXEC :x := piWallis(1);
print x
EXEC :x := piWallis(2);
print x
EXEC :x := piWallis(2000);
print x
select piWallis(100) from dual;
column piWallis(100) format 9.9999999999999999999999999999999
select piWallis(100) from dual;

Este curso esta incluido en el CD-ROM de REDcientífica. Solicítalo por correo haciendo click aquí. http://www.redcientifica.com/cdrom/


Enviar un e-mail a Manuel de la Herrán Gascón Buzón de contacto
© 1999-2004 Manuel de la Herrán Gascón
Volver a la página anteriorIr a la página principalIr a la página siguiente3/5