Изменения в парсере SQL-запросов. Поддержка SQLSTATE и NativeError.
Измeнения в парсере SQL запросов (v3)
- Поддержка терминатора запросов ";"
- Провайдер генерирует ошибку, если обнаружит несколько SQL-запросов в одном тексте команды
- Провайдер генерирует ошибку, если обнаружит пустой запрос в тексте команды. Пример: "select * from RDB$DATABASE;/*empty stmt*/;"
- Добавлена явная поддержка запросов:
- "GRANT ...
- "REVOKE ..."
- "SET GENERATOR ..."
- "SET STATISTICS ..."
Добавлены новые свойства набора рядов (v3)
Поддержка SQLSTATE и NativeError (v3)
- При обработке ошибок сервера, провайдер создает CustomErrorObject,
через который можно получать SQLSTATE (5-ти символьная строка со стандартизированным кодом ошибки)
и NativeError (ISC Error Code).
- Эта функциональность доступна для всех версий FB/IB/YA и не зависит от клиентской библиотеки.
- За основу алгоритмов и таблиц формирования SQLSTATE взят код из
Firebird 2.5 code
- Провайдер поддерживает новый элемент статус вектора
FB2.5 - isc_arg_sqlstate.
При работе через ADODB, SQLSTATE и NativeError доступны через коллекцию ошибок подключения:
- ADODB.Connection->Errors->Error->SQLState
- ADODB.Connection->Errors->Error->NativeError
Например:
option explicit
dim cn
set cn = CreateObject("ADODB.Connection")
cn.Provider="LCPI.IBProvider.3"
cn.Properties("location") = "localhost:d:\database\employee.fdb"
cn.Properties("user id") ="SYSDBA"
cn.Properties("password") ="masterkey"
cn.Properties("auto_commit")=true
call cn.Open()
on error resume next
call cn.Execute("DROP TABLE ABRA_KADABRA")
on error goto 0
dim i
for i=0 to cn.Errors.Count-1
wscript.echo "--- ERROR: "&cstr(i+1)
wscript.echo "SQLState : "&cn.Errors.Item(i).SQLSTATE
wscript.echo "NativeError : "&cn.Errors.Item(i).NativeError
next
Вывод:
--- ERROR: 1
SQLState : 42S02
NativeError : 336397206 <-- ISC CODE: isc_dsql_table_not_found