gCn. Cambiar tratamiento de los valores ANSI NULLS, ANSI_PADDING, ANSI_WARNINGS

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

Especifica el comportamiento conforme a ISO de los operadores de comparación Es igual a (=) y No es igual a (<>) cuando se usan con valores NULL en SQL Server
Cuando SET ANSI_NULLS es ON, una instrucción SELECT que utilice WHERE column_name = NULL devuelve cero filas incluso si no hay valores null en column_name. Una instrucción SELECT que utilice WHERE column_name <> NULL devuelve cero filas incluso si no hay valores distintos de NULL en column_name.
Cuando SET ANSI_NULLS se establece en OFF, los operadores de comparación Es igual a (=) y No es igual a (<>) no siguen el estándar ISO. Una instrucción SELECT que utilice WHERE column_name = NULL devuelve las filas que tienen valores null en column_name. Una instrucción SELECT que utilice WHERE column_name <> NULL devuelve las filas que tienen valores distintos de NULL en la columna. Además, una instrucción SELECT que utilice WHERE column_name <> valor_XYZ devuelve todas las filas que no son valor_XYZ y que no son NULL.
Cuando SET ANSI_NULLS es ON, todas las comparaciones con un valor NULL se evalúan como UNKNOWN. Cuando SET ANSI_NULLS es OFF, la comparación de cualquier dato con un valor NULL se evalúa como TRUE si el valor del dato es NULL. Si no se especifica SET ANSI_NULLS, se aplica el valor de la opción de base de datos ANSI_NULLS. Para obtener más información acerca de la opción de base de datos ANSI_NULLS


En ocasiones, sobre todo cuando se trabaja con servidores vinculados, es necesario que los valores null sean tratados como unknow por sql.
Podemos establecer la opción en la conexión, para trabajar puntualmente con este tipo de consultas o procesos.

Optionset aOption As String, aValor As String

Importante: Actualmente (a fecha de diciembre de 2016) no se garantiza que el ERP trabaje de manera correcta con ansi nulls a on. Se recomienda que luego de hacer la consulta o lanzar el proceso que lo requiere, se vuelva a establecer la opción a OFF.


Ejemplo:


Código VB6:

Sub CallProcess_LinkSrv ()
gcn.OptionSet "ANSI_NULLS", "ON"
gcn.OptionSet "ANSI_PADDING", "ON"
gcn.OptionSet "ANSI_WARNINGS", "ON"
gcn.ejecutastore "LinkServer_ProcessOne"
gcn.OptionSet "ANSI_NULLS", "OFF"
gcn.OptionSet "ANSI_PADDING", "OFF"
gcn.OptionSet "ANSI_WARNINGS", "OFF"
End Sub

Código C#:


Parámetros EjecutaStore -> (string nombre, ref Valor[] parametros,ref string paramInfo)

public static void CallProcess_LinkSrv()
{
	gCn.OptionSet("ANSI_NULLS", "ON");
	gCn.OptionSet("ANSI_PADDING", "ON");
	gCn.OptionSet("ANSI_WARNINGS", "ON");
	Valor[] refs = new Valor[];
	gCn.EjecutaStore("LinkServer_ProcessOne", ref refs);
	gCn.OptionSet("ANSI_NULLS", "OFF");
	gCn.OptionSet("ANSI_PADDING", "OFF");
	gCn.OptionSet("ANSI_WARNINGS", "OFF");
}


¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo