una ayudita?

elchip

Tengo que hacer 1 ejercicio en formato proc, osea procedimiento no función de base de datos de programación que haga dándole yo 2 números, osea declarándolos hacer que me devuelva los números que hay entre esos 2 que he declarado.

el enunciado dice esto:
Crear un procedimiento que muestre los números comprendidos entre dos números
pasados como parámetro. Por ejemplo, si los parámetros son 5 y 10 el procedimiento
mostrará: 6 7 8 9

He de decir que es mysql todo

Alguna idea?, no quiero que me lo hagáis tmp xD

pantocreitor

Haz un bucle cuyo número de iteraciones sean la diferencia entre el mayor número dado y el menor menos 1.
En el bucle simplemente empieza por el menos número dado +1 cada vez.

Edit: si tienes que mostrar el mayor número dado al bucle no le restes 1

B

Por ejemplo, si los parámetros son 5 y 10 el procedimiento
mostrará: 6 7 8 9 10

El 10 también?

1 respuesta
elchip

#3 no xD

arreglado:
delimiter $$
drop procedure if exists num_comprendido$$
create procedure num_comprendido (num1 int, num2 int)
begin
declare contador int default 0;
while (contador >=0) do
if (contador >num1 and contador <num2) then
select contador;
end if;
set contador=contador+1;
end while;
end; $$

delimiter ;
call num_comprendido (2,6);

1 respuesta
Cryy

#4 Cuidado que aunque la salida sea correcta, estas en un bucle infinito.

1 respuesta
elchip

#5 pues no hace nada de bucle infinito o eso o no te entiendo xD

1 respuesta
Cryy

#6 contador SIEMPRE es mayor o igual a 0, prueba a poner el select sin el if y veras.

1 respuesta
elchip

#7 es que para eso está el end if; supongo no?
Siempre hemos puesto el contador a 0 no se eso lo hacía la profe xD

1 respuesta
Cryy

#8 el end if es como el corchete de cerrar de un if, igual que el end while.

1 respuesta
elchip

#9 Yaya, ok vale te refieres al = del >=0 lo que me dices no?

1 respuesta
Cryy

#10 el tema es que en ningun momento sale del while, estas empezando en 0 el contador y se te va hasta el infinito sin salir del bucle, tendrías que ponerle un limite máximo.

begin
declare contador int default 0;
while (contador >=0) do
select contador;
set contador=contador+1;
end while;
end;

Prueba a ejecutar esto para que veas lo que pasa.

1 respuesta
elchip

#11 entiendo, bueno ya no estoy con el pc luego miraré jaja, pero muchas gracias

Usuarios habituales