Problemas con valor NULL

10/06/2006 - 18:08 por Eliana Londoño | Informe spam
Buenos dias, tengo el siguiente procesimiento almacenado
*****************
CREATE procedure A_prueba
@Placa_Vehiculo char(10),
@Identificacion_Propietario_Por_Matricula2 char(15)
AS
DECLARE @Identificacion_Propietario_Por_Matricula2_Actual char(15)
SELECT @Identificacion_Propietario_Por_Matricula2_Actual =
Identificacion_Propietario_Por_Matricula2
FROM Vehiculos Where Placa_Vehiculo = @Placa_Vehiculo
/*-- Si la Id del propietario actual es diferente a la que se envia como
parametro agregamos un registro en la tabla de Historicos --*/
SET ANSI_NULLS OFF
IF (@Identificacion_Propietario_Por_Matricula2_Actual <>
@Identificacion_Propietario_Por_Matricula2)
INSERT INTO Vehiculos_Historico (Placa_Vehiculo,
Identificacion_Propietario_Por_Matricula2)
VALUES (@Placa_Vehiculo, @Identificacion_Propietario_Por_Matricula2)
SET ANSI_NULLS ON
RETURN
GO
*****************
El problema es que cuando uno de los valores viene Nulo, ya sea el que
recupero de la tabla original o el que se envia como parametro, la condicion
no se cumple

Estuve leyendo y vi que era por lo del SET ANSI_NULLS (primero no lo tenia),
pero lo coloque y nada...
Tambien evalue el valor de las dos vbles y efectivamente una viene como NULL
y la otra con un valor valido...

Que se les ocurre que pueda estar haciendo de manera equivocada?.. o como
pueden colaborarme con el problema...

Muchas gracias por sus comentarios...

Eliana Londoño
Medellin-Colombia

Preguntas similare

Leer las respuestas

#1 Carlos
11/06/2006 - 13:30 | Informe spam
No entiendo bien, quieres que la condicion se cumpla aunque el campo o la
variable vengan con un valor NULL ??? algo como un LEFT JOIN ???

Por si acaso checate la funcion ISNULL().


"Eliana Londoño" escribió en el mensaje
news:
Mostrar la cita
#2 Alejandro Mesa
12/06/2006 - 14:50 | Informe spam
Eliana,

Existen varias formas de resolver este problema. Para que la solucion sea
optima, requerimos saber un poco mas sobre el esquema de la tabla en question.

- La columna [Placa_Vehiculo] acepta valor NULL?
- Tiene esa tabla algun indice por la columna [Placa_Vehiculo]?
- Cual es resultado esperado de ese procedimiento?

Una solucion comun es:

Where
(Placa_Vehiculo = @Placa_Vehiculo)
or
(@Placa_Vehiculo is null)

Si deseas la filas cuyo valor en la columna [Placa_Vehiculo] es igual al
valor del parametro y ademas si es NULL:

Where
(Placa_Vehiculo = @Placa_Vehiculo or Placa_Vehiculo is null)
or
(@Placa_Vehiculo is null)


Dynamic Search Conditions in T-SQL
http://www.sommarskog.se/dyn-search.html

Te aconsejo que no uses el setting "SET ANSI_NULLS OFF", pues los resultados
pueden ser impredecibles.

A NULL Puzzl
http://groups.google.com/group/micr...2MSFTNGP12


AMB

"Eliana Londoño" wrote:

Mostrar la cita
#3 Eliana Londoño
12/06/2006 - 17:36 | Informe spam
Gracias por contestar...

La condicion con la que tengo el problema es

IF (@Identificacion_Propietario_Por_Matricula2_Actual <>
@Identificacion_Propietario_Por_Matricula2)

Esto NO esta dentro de un SQL, es una condicion para que se haga un insert
en otra tabla. O sea es la comparacion de dos vbles, cuando una de ellas
tiene como valor NULL

Espero que sea mas clara la pregunta...

Otra vez, gracias y espero mas comentarios...

Eliana Londoño
Medellin-Colombia




"Eliana Londoño" escribió en el mensaje
news:
Mostrar la cita
#4 Alfredo Novoa
12/06/2006 - 17:50 | Informe spam
Hola Eliana,

On Mon, 12 Jun 2006 10:36:44 -0500, in microsoft.public.es.sqlserver
you wrote:

Mostrar la cita
El problema es que NULL no es un valor sino que es una marca que
indica que no hay ningún valor en la variable.

Lo único que puedes hacer es comprobar si una variable está sin valor
usando IS NULL.


Saludos
Alfredo
#5 Alejandro Mesa
12/06/2006 - 19:35 | Informe spam
Entonces trata:

Mostrar la cita
IF isnull(@Identificacion_Propietario_Por_Matricula2_Actual, 0) <>
isnull(@Identificacion_Propietario_Por_Matricula2, 0)
...


AMB

"Eliana Londoño" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida