Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/09/2008, 20:25
leipunk
 
Fecha de Ingreso: diciembre-2007
Mensajes: 22
Antigüedad: 16 años, 5 meses
Puntos: 0
Mensaje Respuesta: SP Update Dinamico

gracias por responder.
La verdad que no encuentro lo que necesito y en realidad nose si podra. Mi idea es hacer un procedimiento almacenado para actualizar los registros, que fuese parecido, al siguiente que es para buscar.

CREATE PROCEDURE [dbo].[Tabla1_Consulta]
@campo1 INT= 0,
@campo2 INT=0,
@campofecha1 DATETIME= NULL,
@campofecha2 DATETIME= NULL,
@Idcampo1 INT=0,
@Idcampo2 INT=0
AS
BEGIN TRANSACTION
BEGIN
SELECT campo1,campo2, ..... , campon
FROM
Tabla1
WHERE
(campofecha1 >= @campofecha1 OR @campofecha1=null) AND (campofecha2 <= @@campofecha2 OR @@campofecha2=NULL)
AND (campo1 = @campo1 OR @campo1=0)
AND (campo2 = @campo2 OR @campo2 = 0)
AND (Idcampo1 = @Idcampo1 OR @Idcampo1=0)
AND (Idcampo2 = @Idcampo2 OR @Idcampo2=0)
END
COMMIT TRANSACTION
GO

Aqui le entrego los parametros para realizar la busqueda en el caso de que algunos de estos parametros fuese NULL para los valores string y 0 en el caso de los valores numericos, estos no son tomados en cosideracion.

por ejemplo si en la busqueda solo coloco @campo1, me buscara solo por este campo y los otros campos no seran considerados.

El procedimiento que deseo hacer para actualizar tiene la misma mecanica, pero no se como se puede hacer.

por ejemplo tengo 3 campos para actualizar

CREATE PROCEDURE [dbo].[Tabla1_Actualizar]
@idcampo INT= 0,
@campo1 Varchar=NULL,
@campo2 Varchar=NULL,
@campo3 Varchar=NULL
AS
BEGIN TRANSACTION
BEGIN
UPDATE dbo.Tabla1
SET campo1 = @campo1,
campo2 = @campo2,
campo3 = @campo3
WHERE idcampo = @idcampo
END
COMMIT TRANSACTION
GO

ahora como se puede hacer si quiero actualizar solo el campo1 y no los demas. ¿?
o si quiero actualizar todos los campos menos el campo2.
esa es mi duda