Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Para actualizar un numero determinado de filas, como pongo la instruccion ?

Estas en el tema de Para actualizar un numero determinado de filas, como pongo la instruccion ? en el foro de PostgreSQL en Foros del Web. Tengo que hacer una funcion que me actualice solo un 25% de los registros de una tabla. Yo lo he hecho así, pero el resultado ...
  #1 (permalink)  
Antiguo 23/11/2010, 05:02
 
Fecha de Ingreso: noviembre-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Para actualizar un numero determinado de filas, como pongo la instruccion ?

Tengo que hacer una funcion que me actualice solo un 25% de los registros de una tabla.

Yo lo he hecho así, pero el resultado es que me los actualiza todos.

CREATE OR REPLACE FUNCTION precioventa2() RETURNS varchar(40) AS'
DECLARE
productoscon40 integer;
porcentaje numeric(4,2);
redondeo integer;
i integer = 0;
mensaje varchar(40);
BEGIN
SELECT count(num_serie) INTO productoscon40 from producto inner join unidad_venta on producto.codigo = unidad_venta.codigo_producto where producto.codigo in (select codigo_producto from unidad_venta where precio_actual = 40);

porcentaje = productoscon40 * 0.25;
redondeo = round(porcentaje);
mensaje = ''Procedimiento realizado con éxito'';

WHILE i <= redondeo LOOP
UPDATE unidad_venta SET precio_actual = 10 where precio_actual = 40;
i = i + 1;
END LOOP;
RETURN mensaje;
END;
'LANGUAGE 'plpgsql';


Alguien ve el error ?
  #2 (permalink)  
Antiguo 23/11/2010, 07:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Para actualizar un numero determinado de filas, como pongo la instruccion

Lo que veo es que si la variable redondeo por ejemplo queda en 30, va a ejeicutar la misma sentencia 30 veces sin cambio alguno.

Código SQL:
Ver original
  1. UPDATE unidad_venta SET precio_actual = 10 WHERE precio_actual = 40;

esto va a ejecutarse un numero de veces variable pero siempre afectará los registros con estas características.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: determinado, filas, instruccion, numero, pongo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:16.