modificar varios datos

13/09/2006 - 19:51 por msnews.microsoft.com | Informe spam
hola gente, como les va?

les comento tengo que modificar en una tabla, dos valores, serian dos
campos. Ahora uno de esos campos lleva una diferencia, es decir base a otro
campo de ese mismo registro, debo hacer un calculo y guardar esa diferencia
en uno de esos dos campos a modificar, ejemplo:

Campo A: Nro
Campo B: Valor_B
Campo C: Valor_C
Campo D: Estado
Campo E: Resultado

Hoy eso se resuelve con el programa, levantando todo el registro de la tabla
(buscando por el Campo A), esos datos se muestran en pantalla y al cerrar la
pantalla, modifica los datos en los campos Campo D y Campo E.
Para Campo E, toma los valores de los campos B y C, hace el calculo y pone
el resultado en el Campo E.

Ahora eso en lugar de hacerlo en el programa, necesito hacerlo con un SP de
SQL. Como seria la sentencia de Update?, porque este seria un proceso que
correria a la noche, es decir que no estaria buscando por el Campo A, sino
que estaria buscando todos los registros que tengan un determinado estado
(Campo D).

La idea es no usar un cursor.

se les ocurre algo?

gracias (de ante mano)

Preguntas similare

Leer las respuestas

#6 jcac
13/09/2006 - 21:18 | Informe spam
El sp que te he pasado respeta cada uno de los registros que va ha
actualizar, ten en cuenta que el sql server trabaja por bloques de datos y
eso es lo que esta haciendo.

Create Procedure Actualiza
@CampoD int
As
Update Tabla1 Set CampoE = [Operacion que desees hacer] Where CampoD =
@CampoD

Mira como por ejemplo:

Si tienes lo siguiente en tu tabla

CampoA CampoB CampoC CampoD CampoE
1 2 3 5 0
3 5 8 5 0
2 10 11 15 0

Si deseamos actualizar el CampoE de todo aquellos que tengan en el CampoD =
5

Si ejecutamos el sp con la siguiente modificación

Create Procedure Actualiza
@CampoD int
As
Update Tabla1 Set CampoE = CampoB-CampoC Where CampoD = @CampoD
go
Actualiza 5
go
Select * From Tabla1
go

tendremos lo siguiente

CampoA CampoB CampoC CampoD CampoE
1 2 3 5 -1
3 5 8 5 -3
2 10 11 15 0

Saludos


"msnews.microsoft.com" escribió en el mensaje
news:
lo que pasa que los valores que necesito estan en el mismo registro que
tiene que actualizar.
En el aplicativo lo podria resolver asi:

primero buscao todos los valores de Campo A, Campo B, Campo C , con la
condicion que campo D sea igual a 1 (estado).

Luego voy recorriendo uno por uno, esos regsitros que me trajo la primer
consulta, y voy calculando el valor del Campo E (resultado), entonces hago
un UPDATE del campo E where Campo A = Nro (valor que saco de la consulta
anteriror, seria el registro que voy leyendo y voy levantando los datos).

Eso como lo hago en el SP, sin hacer el curso, hay manera de decirle al
UPDATE que tome datos de algunos campos del registro que tiene que
modificar, con esos datos hago un calculo y le pongo el resulto en otro
campo del mismo registro.

saludos


"jcac" escribió en el mensaje
news:
Bueno según lo que te entendido:

Create Procedure Actualiza
@CampoD int
As
Update Tabla1 Set CampoE = [Operacion que desees hacer] Where CampoD =
@CampoD

Esto lo hara por registro y actualizara toda la tabla sin usar cursores.

Saludos



"msnews.microsoft.com" escribió en el mensaje
news:
hola gente, como les va?

les comento tengo que modificar en una tabla, dos valores, serian dos
campos. Ahora uno de esos campos lleva una diferencia, es decir base a
otro campo de ese mismo registro, debo hacer un calculo y guardar esa
diferencia en uno de esos dos campos a modificar, ejemplo:

Campo A: Nro
Campo B: Valor_B
Campo C: Valor_C
Campo D: Estado
Campo E: Resultado

Hoy eso se resuelve con el programa, levantando todo el registro de la
tabla (buscando por el Campo A), esos datos se muestran en pantalla y al
cerrar la pantalla, modifica los datos en los campos Campo D y Campo E.
Para Campo E, toma los valores de los campos B y C, hace el calculo y
pone el resultado en el Campo E.

Ahora eso en lugar de hacerlo en el programa, necesito hacerlo con un SP
de SQL. Como seria la sentencia de Update?, porque este seria un proceso
que correria a la noche, es decir que no estaria buscando por el Campo
A, sino que estaria buscando todos los registros que tengan un
determinado estado (Campo D).

La idea es no usar un cursor.

se les ocurre algo?

gracias (de ante mano)









email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida