Actualizar columna utilizando PL/SQL
Tengo una tabla T1 con 3 columnas y 100 registros. Todas las columnas y filas están llenas, pero los valores de la primera columna llamada ID están vacíos. Por lo tanto, quiero llenar la columna ID con orden numérico (1, 2, … 100) para las 100 filas utilizando un programa PL/SQL. He intentado con rownum y con una secuencia que funciona bien. Quiero intentarlo con un bloque PL/SQL. También he intentado escribir un bloque PL/SQL, sin embargo, no obtengo el resultado deseado.
declare
count1 number;
begin
SELECT COUNT(1) INTO COUNT1 FROM T1;
FOR I IN 1..COUNT1
loop
UPDATE T1 SET ID =I;
end loop;
end;
davy.ai
El bloque pl/SQL mostrado arriba está cerca, pero no dará el resultado deseado.
El problema con el bloque es que actualizará todas las filas de la tabla con el mismo valor de ID, que será igual al número de filas en la tabla. Esto se debe a que la consulta SELECT COUNT(1) INTO COUNT1 FROM T1 devuelve un valor único que representa el número total de filas en la tabla, y ese valor se utiliza luego para actualizar cada fila en el bucle.
Para solucionarlo, debemos modificar el bucle para usar una variable de contador que se incrementa con cada iteración. Podemos hacer esto declarando otra variable, digamos id_counter, inicializándola en 1 antes del bucle. Luego, dentro del bucle, actualizaremos cada fila con el valor actual de la variable id_counter e incrementaremos para la próxima iteración. Aquí está el bloque corregido:
Con este bloque, cada fila se actualizará con un valor de ID único que se incrementa de 1 a 100, como se desea.