Соответствие стандарту ANSI SQL 92

Previous  Top  Next

    
 

 

Соответствие стандарту ANSI SQL 92

В MS SQL Server имеются настройки, позволяющие изменять степень соответствия сервера стандарту ANSI SQL 92.

SET ANSI_NULLS {ON|OFF} регулирует результат сравнения значений, содержащих NULL. Если ANSI_NULLS = OFF, то запрос

Code:

SELECT * FROM MyTable WHERE MyField = NULL

 

 

 

Вернет все строки, в которых MyField установлено в NULL. Если ANSI_NULLS = OFF, то, в соответствии со стандартом ANSI SQL92 сравнение с NULL возвращает UNKNOWN. Другие установки, на которые следует обратить внимание:

SET CURSOR_CLOSE_ON_COMMIT        Устанавливает режим закрытия курсоров по завершению транзакции        

SET ANSI_NULL_DFLT_ON и  SET ANSI_NULL_DFLT_OFF        Устанавливают nullability полей по умолчанию при создании таблицы        

SET IMPLICIT_TRANSACTIONS        Устанавливает режим Autocommit        

SET ANSI_PADDING        Устанавливает режим «отсечения» концевых пробелов для вновь создаваемых полей        

SET QUOTED_IDENTIFIER        Разрешает выделение идентификаторов двойными кавычками        

SET ANSI_WARNINGS        Устанавливает реакцию на математические ошибки        

Рассмотрение этих параметров выходит за рамки книги, однако необходимо обратить на них внимание при чтении документации.

Установка SET ANSI_DEFAULTS устанавливает режим максимальной совместимости с ANSI SQL92. При установке SET ANSI_DEFAULTS ON устанавливаются в ON следующие параметры:

SET ANSI_NULLS        SET CURSOR_CLOSE_ON_COMMIT        

SET ANSI_NULL_DFLT_ON        SET IMPLICIT_TRANSACTIONS        

SET ANSI_PADDING        SET QUOTED_IDENTIFIER        

SET ANSI_WARNINGS                

По умолчанию ANSI_DEFAULTS = ON для клиентов ODBC и OLE DB (ADO) и OFF для клиента DB-Library (BDE). Поскольку предпочтительным (и поддерживаемым в будущем) методом доступа является OLE DB, то при разработке клиентской части, использующей BDE, рекомендуется явно устанавливать SET ANSI_DEFAULTS ON. С разностью этой установки связана и проблема, возникающая при разработке запросов при помощи Query Analyzer. Если в нем и в клиентском приложении имеются разные настройки совместимости с ANSI одни и те же запросы могут выдавать разные результаты. Поэтому рекомендуется проверять настройки Query Analyzer на предмет соответствия их тем, что предполагается иметь в клиенте.