Archivo

Entradas Etiquetadas ‘PL/SQL’

Generar numeros Aleatorios y guardarlos en una Tabla – PL/SQL [ORACLE]

Viernes, 4 de febrero de 2011 Sin comentarios

Aqui se pide al usuario un numero al que se le aplicara la formula para dar numeros aleatorios , a este numero lo dividimos entre 1000 y comprobamos si la parte entera esta entre 1 y 49 , si se cumple la condicion vamos almacenandolo en la tabla hasta tener los 6 numeros (de 1 o 2 cifras), luego imprmimos la tabla para mostrar los numeros.



Salida:

Introduzca un valor para numero_inicial: 15

Numeros Aleatorios:
37   41   49   16   48   45

Procedimiento PL/SQL terminado correctamente.


Codigo:

set termout on;
set serveroutput on;
set ver off;

declare

	inicial number :=0;
	repetida boolean := false;
	n number :=1;
	numero number := 1;
	type tabla is table of number index by binary_integer;
	aleatorios tabla;

begin

	/*Pedir el Numero Inicial al Usuario*/
	inicial := '&numero_inicial';

	/* Inicializar la tabla en 0 */
	for j in 1..6 loop
		aleatorios(j) := 0;
	end loop;

	/* Alamacenar los 6 numeros aleatorios que cumplan las condiciones */
	while n < = 6 loop
		/* FORMULA */
		inicial := MOD((25173 * inicial + 13849 ),65536);

		/* Guardar en Numero la parte entera del numero aleatorio dividido entre mil */
		numero := floor(inicial / 1000);

		/* Comprobar que el numero este entre 1 y 49 */
		if numero >0 AND numero < = 49 then
			/* Recorrer la tabla buscando que el numero no este repetido*/
			for k in 1..6 loop
				if aleatorios(k) = numero then
					repetida := true;
					exit;
				end if;
			end loop;

			/* Si NO esta repetida lo guardamos en la posicion de la tabla y si lo esta ponemos a False de nuevo la variable */
			if repetida = false  then
				aleatorios(n) := numero;
				n := n +1;

				else
					repetida := false;
			end if;	

		end if;	

	end loop;

	/* Imprimimos la tabla con los 6 numeros */
	dbms_output.put_line ('
	');
	dbms_output.put_line ('Numeros Aleatorios:');
	for i in 1..6 loop

		dbms_output.put(rpad(aleatorios(i),5));

	end loop;
		dbms_output.put_line ('	');

end;
/
Categories: Oracle PL/SQL Tags: , , , , , , ,

Imprimir los 100 primeros multiplos de un Numero en PL/SQL [ORACLE]

Jueves, 3 de febrero de 2011 1 comentario

En este ejercicio PL/SQL se debe imprimir los 100 primeros multiplos de un numero, en este caso el 5.


Salida:

Los 100 primero multiplos de 5 son:
5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100,
105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180,
185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260,
265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340,
345, 350, 355, 360, 365, 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420,
425, 430, 435, 440, 445, 450, 455, 460, 465, 470, 475, 480, 485, 490, 495, 500,
505

Procedimiento PL/SQL terminado correctamente.


Codigo:

set termout on;
set serveroutput on;
set ver off;

declare

	i number := 0;
	cont number :=1; /*para que no cuente el 0 */

	type tabla is table of number index by binary_integer;
	multiplos tabla;

begin

	/* Guardar los multiplos en la tabla*/
	while i < = 100 loop	

		/* Comprobar que sea Multiplo de 5*/
		if MOD(cont,5) = 0 then
			multiplos(i) := cont;
			i := i + 1;
		end if;

		cont := cont+1;

	end loop;	

	/* Imprimir la Tabla */
	dbms_output.put_line ('Los 100 primero multiplos de 5 son:');
	for i in 0..100 loop

		if i <100 then
			dbms_output.put(multiplos(i)||', ');
			else /*si es el ultimo numero que no imprima la coma*/
				dbms_output.put(multiplos(i));
		end if;		

	end loop;
		dbms_output.put_line ('	');

end;
/
Categories: Oracle PL/SQL Tags: , , , , ,

Convertir Numero Decimal a Binario en PL/SQL [ORACLE]

Jueves, 27 de enero de 2011 3 comentarios

En este ejercicio PL/SQL se pide al usuario un numero decimal y el programa debera convertirlo a binario e imprimirlo.


set termout on;
set serveroutput on;
set ver off;

declare

	i number :=0;
	numero number := 1;
	type tabla is table of number index by binary_integer;
	resto tabla;

begin

	/*Pedir el Numero al Usuario*/
	dbms_output.put_line('Dame el numero:');
	numero := '&numero';

	/*Guardamos el Resto de cada operacion*/
	while numero >= 2 loop
		resto(i) := mod(numero,2);
		numero := (numero- resto(i))/2;
		i := i + 1;
	end loop;

	/*Guardamos el ultimo numero en la tabla del Resto */
	resto(i) := numero;

	/*Imprmir la tabla del Resto desde el Final */
	while i >= 0 loop
		dbms_output.put(resto(i)||rpad('	',1));
		i := i - 1;
	end loop;

	dbms_output.put_line ('	');

end;
/

Gracias a @ Gustavo Mendoza Ramírez por comentar un error en el codigo ;)

Categories: Oracle PL/SQL Tags: , , ,

Quitar numeros de una cadena y mostrar el primer apellido PL/SQL [ORACLE]

Martes, 11 de enero de 2011 Sin comentarios

En este ejercicio PL/SQL se pide al usuario sus apellidos, debemos de limpiar la cadena quitandole los numeros que se hayan introducido por error y mostrar el primer apellido.


set termout on;
set serveroutput on;

declare
	v_apellidos varchar2(25);
	v_1apel varchar2(25);
	v_caracter char;
	v_posicion integer := 1;
	v_num integer :=0;

begin
	v_apellidos := '&apellidos';

	while v_num <=9 loop
		v_apellidos := replace(v_apellidos,v_num);
		v_num := v_num +1;
	end loop;

	v_apellidos := upper(v_apellidos);
	v_caracter := substr(v_apellidos, v_posicion, 1);

	while v_caracter between 'A' and 'Z'loop
		v_1apel := v_1apel || v_caracter;
		v_posicion := v_posicion+1;
		v_caracter := substr(v_apellidos, v_posicion, 1);
	end loop;

	dbms_output.put_line('1er apellido es: '||v_1apel||'******');

end;

/
Categories: Oracle PL/SQL Tags: , , ,