¿Cómo comprobar la longitud de una tabla y hacer una condición “if” con ella para luego eliminar una fila?
Tengo una tabla que disminuyo una fila cada vez que entra en un bucle. ¿Cómo puedo verificar antes del bucle si la longitud de la tabla es cero y eliminar la fila que obtuve después?
declarar
l_temp número;
comenzar
insertar en l_temp (seleccionar id_juguete de juguetes);
si l_temp > 0 entonces
para rw en (seleccionar id_juguete de (seleccionar id_juguete
de juguetes
ordenar por dbms_random.value)
donde fila = 1)
bucle
dbms_output.put_line(id_juguete);
eliminar de juguetes donde id_juguete = rw;
fin loop;
sino
dbms_output.put_line('no hay más juguetes');
fin si;
fin;
davy.ai
Para comprobar si la longitud de la tabla es cero antes del bucle y eliminar la fila después, se puede usar el siguiente código:
El código primero selecciona el número de filas en la tabla de
toys
usando la funciónCOUNT
y lo guarda en la variablel_temp
. Luego, comprueba sil_temp
es mayor que cero. Si lo es, se ejecuta el bucle, seleccionando untoy_id
aleatorio y eliminándolo de la tabla detoys
. Sil_temp
es cero, el programa imprime “no hay más juguetes”.Tenga en cuenta que en el código original,
l_tem
nunca se inicializó; asumo que es un error tipográfico y lo cambié al_temp
. Además, en la declaraciónDELETE
,toy_id(rw)
debería cambiarse atoy_id = rw.toy_id
, ya querw
es una variable de cursor que representa la fila actual que se está procesando.