Administración y Optimización de Bases de Datos Oracle
Copyright 1999-2004
Manuel de la Herrán Gascón
Procedimientos PL/SQL
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);
|
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);
|
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);
|
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;
/
|
-- 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/
|