Validacion dentro de sp

23/02/2006 - 16:03 por Omar | Informe spam
Buen día, nuevamente recurro a ustedes por que necesito de su ayuda,
explico mi problema.

Tengo una tabla en la cual tengo un campo llamado "clave" de tipo Int
que permite valores nulos, pero necesito validar que cundo se ingrese un
nuevo valor a este campo se valide que la nueva clave que se desea
introducir no este ya asignada, algo como lo siguiente:

Clave
123
NULL
654
NULL

Y cuando yo trate de ingresar un nuevo registro con clave por ejemplo
123 me indique que la clave ya existe.

Tengo hecho un sp el cual listo a continuación pero no me funciona ya
que cuando ejecuto mi sp a traves de mi aplicación dejando en blanco el
Textbox Clave me lo toma como NULL y siempre me dice que la clave ya existe.


CREATE PROCEDURE sp_GuardaExtension
@id_extension int,
@usuario varchar(50),
@clave int,
@descripcion varchar(50),
@id_ccostos int,
@tipo_servicio varchar(5),
@desc_tipo_servicio varchar(50)

AS

DECLARE @ErrorSave INT
SET @ErrorSave = 0


IF NOT EXISTS (select * from extension where clave=@clave)
BEGIN
INSERT INTO extension (id_extension, usuario, clave,
descripcion, id_ccostos, tipo_servicio,
desc_tipo_servicio)
VALUES (@id_extension, @usuario, @clave, @descripcion,
@id_ccostos, @tipo_servicio, @desc_tipo_servicio)

END
ELSE
IF (@@ERROR <> 0) --Si hay error
SET @ErrorSave = @@ERROR
RETURN @ErrorSave
GO

Muchas gracias por su valiosa ayuda al respecto.
 

Leer las respuestas

#1 Carlos Sacristán
23/02/2006 - 16:44 | Informe spam
Es que por defecto NULL no es lo mismo que NULL. Te falta la validación:

IF NOT EXISTS (select * from extension where clave=@clave OR @clave IS
NULL)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Omar" escribió en el mensaje
news:#
Buen día, nuevamente recurro a ustedes por que necesito de su ayuda,
explico mi problema.

Tengo una tabla en la cual tengo un campo llamado "clave" de tipo Int
que permite valores nulos, pero necesito validar que cundo se ingrese un
nuevo valor a este campo se valide que la nueva clave que se desea
introducir no este ya asignada, algo como lo siguiente:

Clave
123
NULL
654
NULL

Y cuando yo trate de ingresar un nuevo registro con clave por ejemplo
123 me indique que la clave ya existe.

Tengo hecho un sp el cual listo a continuación pero no me funciona ya
que cuando ejecuto mi sp a traves de mi aplicación dejando en blanco el
Textbox Clave me lo toma como NULL y siempre me dice que la clave ya


existe.


CREATE PROCEDURE sp_GuardaExtension
@id_extension int,
@usuario varchar(50),
@clave int,
@descripcion varchar(50),
@id_ccostos int,
@tipo_servicio varchar(5),
@desc_tipo_servicio varchar(50)

AS

DECLARE @ErrorSave INT
SET @ErrorSave = 0


IF NOT EXISTS (select * from extension where clave=@clave)
BEGIN
INSERT INTO extension (id_extension, usuario, clave,
descripcion, id_ccostos, tipo_servicio,
desc_tipo_servicio)
VALUES (@id_extension, @usuario, @clave, @descripcion,
@id_ccostos, @tipo_servicio, @desc_tipo_servicio)

END
ELSE
IF (@@ERROR <> 0) --Si hay error
SET @ErrorSave = @@ERROR
RETURN @ErrorSave
GO

Muchas gracias por su valiosa ayuda al respecto.

Preguntas similares