SQL - Store Procedure

 
Vista:

Store Procedure

Publicado por Ruben (2 intervenciones) el 22/09/2006 18:36:44
Buenas, lo que necesito hacer es lo siguiente, quiero hacer un SP que actualice campos de una tabla, el problema es que quiero hacer 1 solo SP que... pueda actualizar los campos que yo desee en ese momento segun los parametros que le pase, mi idea era crear como parametros todos los nombres de los campos y con un valor por defecto que sea el mismo nombre que lleva en la tabla, entonces si yo en el momento de ejecutar el SP no le paso un dato al parametro tomaría el nombre del campo y no tendria que modificarlo, o sea... le dejaría el mismo valor que tenia hasta ahi
Si no me explique bien pongo un EJ:

create procedure Actualiza
@id int,
@nombre varchar(50) = Nombre,
@apellido varchar(50) = Apellido
as
update pruebasp
set Nombre = @nombre, Apellido = @apellido
where id = @id

Entonces si yo lo llamo de la siguiente manera:

sSql = "exec actualiza 1, 'Ruben'

lo que tendría que hacer el SP es actualizarme el registro de id = 1 con ese nombre pero que deje el Apellido como estaba

el problema es que como lo hago arriba me toma el valor por defecto como un string y no como el nombre del campo

alguien sabe como hacerlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Store Procedure

Publicado por Isaías (5072 intervenciones) el 22/09/2006 20:03:23
Debe funcionar:

UPDATE pruebasp
SET Nombre = CASE WHEN @nombre <> 'Nombre' THEN @nombre END,
Apellido = CASE WHEN @apellido <> 'Apellido' THEN @apellido END
WHERE id= @id
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedure

Publicado por Ruben (2 intervenciones) el 22/09/2006 20:58:35
Mil gracias, en realidad me da NULL pero siguiendo esa lógica lo modifique y me anduvo, muchas gracias, quedó asi...

create procedure Actualiza
@id int,
@Nombre varchar(50) = 'Nombre',
@Apellido varchar(50) = 'Apellido'
as
update pruebasp
SET Nombre = CASE @nombre WHEN 'Nombre' THEN nombre else @nombre END,
Apellido = CASE @apellido WHEN 'Apellido' THEN apellido else @apellido END
where id = @id
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedure

Publicado por Isaías (5072 intervenciones) el 22/09/2006 22:53:55
Claro !!!, si no pues te colocaba NULL, que bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar