¿Cuál es el significado de procedimiento almacenado establecido en SQL? Los identificadores entre comillas dobles pueden ser palabras clave reservadas de Transact-SQL o contener caracteres que normalmente no están permitidos por las reglas de sintaxis del identificador de Transact-SQL. Sintaxis SET QUOTED_IDENTIFIER { ON | OFF } Notas Cuando SET QUOTED_IDENTIFIER está ON, los identificadores se pueden delimitar entre comillas dobles y el texto debe delimitarse entre comillas simples. Cuando SET QUOTED_IDENTIFIER está en OFF, los identificadores no se pueden citar y deben cumplir con todas las reglas de identificadores de Transact-SQL. Para obtener más información, consulte Uso de identificadores. El texto puede estar delimitado por comillas simples o dobles. Cuando SET QUOTED_IDENTIFIER está habilitado, todas las cadenas entre comillas dobles se interpretan como identificadores de objetos. Por lo tanto, los identificadores entrecomillados no tienen que seguir las reglas de identificador de Transact-SQL. Pueden ser palabras clave reservadas o contener caracteres que normalmente no están permitidos para los identificadores Transact-SQL. No puede utilizar comillas dobles para delimitar expresiones de cadenas literales; debe encerrar cadenas literales entre comillas simples. Si una comilla simple (') es parte de una cadena literal, se puede representar con dos comillas simples (''). SET QUOTED_IDENTIFIER debe estar habilitado cuando los nombres de objetos en la base de datos usan palabras clave reservadas. Cuando SET QUOTED_IDENTIFIER está desactivado (el valor predeterminado), las cadenas literales en las expresiones se pueden delimitar mediante comillas simples o dobles. Si una cadena literal está delimitada por comillas dobles, la cadena puede contener comillas simples incrustadas, como elipses. SET QUOTED_IDENTIFIER debe estar activado al crear u operar un índice en una columna calculada o vista indexada. Si SET QUOTED_IDENTIFIER está desactivado, las instrucciones CREATE, UPDATE, INSERT y DELETE en tablas que están indexadas en columnas calculadas o vistas indexadas fallarán. Para obtener más información sobre la configuración de la opción SET requerida para vistas indexadas e índices de columnas calculadas, consulte Consideraciones al usar la instrucción SET en SET. El controlador ODBC de SQL Server y el proveedor Microsoft OLE DB para SQL Server configuran automáticamente QUOTED_IDENTIFIER en ON al establecer una conexión, que se puede configurar en la fuente de datos ODBC, las propiedades de conexión ODBC o las propiedades de conexión OLE DB. Para conexiones desde aplicaciones de biblioteca de bases de datos, la configuración SET QUOTED_IDENTIFIER tiene como valor predeterminado APAGADO. Cuando se crea un procedimiento almacenado, las configuraciones SET QUOTED_IDENTIFIER y SET ANSI_NULLS se capturan para llamadas posteriores al procedimiento almacenado. Cuando se ejecuta SET QUOTED_IDENTIFIER dentro de un procedimiento almacenado, su configuración no cambia. SET QUOTED_IDENTIFIER también corresponde a la configuración del identificador entre comillas de sp_dboption. Si SET QUOTED_IDENTIFIER está APAGADO, SQL Server usa la configuración del identificador entre comillas de sp_dboption. Para obtener más información sobre la configuración de la base de datos, consulte sp_dboption y Configuración de las opciones de la base de datos. Establecer en el momento del análisis significa que la declaración SET entra en vigor tan pronto como ocurre en el lote o procedimiento almacenado, independientemente de si la ejecución del código realmente llega a ese punto y la declaración SET entra en vigor antes de que se ejecute cualquier declaración; Se debe tener cuidado al comparar valores nulos. El comportamiento de comparación depende de la configuración de la opción SET ANSI_NULLS.
Cuando SET ANSI_NULLS está activado, si una o más expresiones en la comparación son NULL, en lugar de TRUE o FALSE, se genera UNKNOWN porque un valor desconocido no se puede comparar lógicamente con ningún otro valor. Esto ocurre cuando se compara una expresión con una palabra NULL, o cuando se comparan dos expresiones y una se evalúa como NULL. Por ejemplo, cuando ANSI_NULLS está activado, la siguiente comparación siempre genera DESCONOCIDO: ytd_sales NULL La siguiente comparación también genera DESCONOCIDO siempre que la variable contiene un valor NULL: ytd_sales @MyVariable Utilice la cláusula IS NULL o IS NOT NULL para probar valores NULL. Esto aumenta la complejidad de la cláusula WHERE. Por ejemplo, la columna Región de la tabla de clientes de Northwind permite valores nulos. Si utiliza una instrucción SELECT para probar no solo otros valores sino también valores nulos, debe incluir la cláusula IS NULL: SELECT CustomerID, CompanyName, RegionFROM Northwind.dbo.CustomersWHERE Region IN ('WA', 'SP', ' BC') O Región ES NULL El soporte de Transact-SQL permite a los operadores de comparación devolver VERDADERO o FALSO al comparar con valores NULL, lo que se puede habilitar configurando ANSI_NULLS en APAGADO. Cuando ANSI_NULLS está desactivado, la comparación ColumnA = NULL devuelve VERDADERO si la Columna A contiene un valor NULL; la comparación ColumnA = NULL devuelve FALSO si la Columna A contiene un valor distinto de NULL; Además, al comparar dos expresiones que se evalúan como NULL, se obtendrá VERDADERO. Cuando ANSI_NULLS se establece en OFF, la instrucción SELECT devuelve todos los registros de la tabla Cliente para los cuales la Región está vacía: SELECT CustomerID, CompanyName, RegionFROM Northwind.dbo.CustomersWHERE Región = NULL Los cálculos que involucran NULL dan como resultado NULL. Por ejemplo, si la columna 1 es NULL, entonces el valor de la columna 1 1 es NULL.