- How To Avoid «Odbc driver returned an error (SQLExecDirectW)» Error When Creating a Report in OBIEE — Oracle Knowledge 8.5.1.6? (Doc ID 2348808.1)
- Applies to:
- Symptoms
- Changes
- Cause
- To view full details, sign in with your My Oracle Support account.
- Don’t have a My Oracle Support account? Click to get started!
- Sqlexecdirectw что за ошибка
- SQLExecDirectW exception with pyodbc and SQL Server #636
- Comments
- piskvorky commented Oct 21, 2019
- Environment
- gordthompson commented Oct 21, 2019
- v-chojas commented Oct 21, 2019
- piskvorky commented Oct 21, 2019 •
- v-chojas commented Oct 21, 2019
- gordthompson commented May 29, 2021
- Footer
- Odbc driver returned an error (SQLExecDirectW).
- Answers
- DAC Authentication in Oracle Fusion Middleware (WebLogic Server) Mode
- Драйвер odbc возвратил ошибку sqlexecdirectw oracle bi
- Odbc driver returned an error (SQLExecDirectW).
- Answers
- DAC Authentication in Oracle Fusion Middleware (WebLogic Server) Mode
- Odbc driver returned an error (SQLExecDirectW).
- Best Answer
- Answers
- Функция SQLExecDirect
- Синтаксис
- Аргументы
- Возвращаемое значение
- Диагностика
- Комментарии
How To Avoid «Odbc driver returned an error (SQLExecDirectW)» Error When Creating a Report in OBIEE — Oracle Knowledge 8.5.1.6? (Doc ID 2348808.1)
Last updated on SEPTEMBER 07, 2020
Applies to:
Symptoms
On : 8.5.1.5 version, Analytics Reporting and ETL
Error when trying to create a new report in OBIEE the next error appears.
OBIEE> Results > Compound Layout
Error
View Display Error
Odbc driver returned an error (SQLExecDirectW)
Error Details:
Error Codes: OPR40NWY:U9IM8TAC:OI2DL65P
Changes
Cause
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
In this Document
Symptoms |
Changes |
Cause |
Solution |
References |
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | |
|
| Legal Notices | Terms of Use
Sqlexecdirectw что за ошибка
My method so far to make changes to our existing reports has been to
1. Open the report
2. Modify
(Most, if not all, are Direct Database Requests)
3. Cut and Paste the SQL into my editor (JDeveloper)
4. Fix any issues
5. Run in SQL*Plus
6. Cut and paste back into OBIEE
On occasion, I’ll have to use the Catalog Manager, select report, properties, Edit XML and get the SQL from there. Obviously not the most efficient way, but it works.
Others, like Mr. Berg, have suggested turning the log level to level 2 and capturing the SQL being passed to the database. I’m not that industrious yet.
Anyway, I’ve run across this error a couple of times so far.
When I do number 6 and click on Validate SQL and Retrieve Columns, I get the above mentioned error. Hmmm. I’ve just run this thing in SQL*Plus and it works just fine. The queries are really too big to simply eyeball either.
So I went simple, in the text box I entered SELECT * FROM DUAL and clicked on Validate SQL and Retrieve Columns:
error : Odbc driver returned an error (SQLExecDirectW).
error : State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43093] An error occurred while processing the EXECUTE PHYSICAL statement. [nQSError: 17001] Oracle Error code: 933, message: ORA-00933: SQL command not properly ended at OCI call OCIStmtExecute. [nQSError: 17010] SQL statement preparation failed. (HY000)
error : SQL Issued:
It appears the query that previously occupied that box is still there. partially.
Mr. Berg suggested clearing the cache, so I went into the Administration tool, Manage, but cache was grayed out. I asked the DBA and Linux guy to pass me the file, but they were being difficult today, so I didn’t get it.
In the short term, I just created a new report appended with » R» (refactored) and moved on to the next one. Hopefully tomorrow I’ll be able to get some answers.
SQLExecDirectW exception with pyodbc and SQL Server #636
Comments
piskvorky commented Oct 21, 2019
A cursor.execute(«SELECT …») query against SQL Server with pyodbc is giving me this error:
pyodbc.ProgrammingError: (‘42000’, ‘[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]HdfsBridge::recordReaderFillBuffer — Unexpected error encountered filling record reader buffer: NumberFormatException: For input string: «5,41E+18» (107090) (SQLExecDirectW)’)
Any idea where that is coming from? Is it fixable on my (=pyodbc’s) side? (The SQL DB is not under my control.)
Environment
- Python: Python 3.7.3 (default, Aug 20 2019, 17:04:43) [GCC 8.3.0] on linux
- pyodbc: pyodbc==4.0.26
- OS: Ubuntu 19.04
- DB: SQL Server
- driver: ODBC Driver 17 for SQL Server
The text was updated successfully, but these errors were encountered:
gordthompson commented Oct 21, 2019
Can you narrow it down to a particular column that causes the error? If so, what is the data type of that column? Also be sure to specify if the query simply retrieves the column directly, or if it tries to do a CAST/CONVERT (or similar) on it.
v-chojas commented Oct 21, 2019
Do you have a repro? That error is coming from the server.
piskvorky commented Oct 21, 2019 •
pyodbc.ProgrammingError: (‘42000’, «[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]External file access failed because the specified path name ‘/OK/FILESERVER/SOMEPATH/2019/10/07’ does not exist. Enter a valid path and try again. (105002) (SQLExecDirectW)»)
pyodbc.ProgrammingError: (‘42000’, ‘[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]HdfsBridge::recordReaderFillBuffer — Unexpected error encountered filling record reader buffer: HadoopExecutionException: Not enough columns in this line. (107090) (SQLExecDirectW)’)
I’m not sure how the SQL server is set up, these logs came from the client, I don’t have direct access to the DB. But googling around, the errors seem related to Parquet or HDFS or Hadoop… maybe some SQL adapter? Is there such thing?
I’ve not seen this before, but I’m thinking the error could be related to the SQL Server’s adapter configuration, rather than pyodbc.
@gordthompson there’s no CAST/CONVERT, this is a straight up SELECT
v-chojas commented Oct 21, 2019
You are correct, those error messages are all coming from the server. pyODBC just passes through the query and otherwise has no involvement in this.
gordthompson commented May 29, 2021
Closed due to inactivity. Feel free to re-open with current information if necessary.
Footer
© 2022 GitHub, Inc.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Odbc driver returned an error (SQLExecDirectW).
Error Details
Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 43119] Query Failed: [nQSError: 17001] Oracle Error code: 12154, message: ORA-12154: TNS:could not resolve the connect identifier specified at OCI call OCIServerAttach. [nQSError: 17014] Could not connect to Oracle database. (HY000)
Answers
It is clear that . Oracle is not connecting.
1) Check RPD Connection pool properties. give correct Datasource name and username/password.
2) If it is not connecting. then problem with tns file.
3)Have you copied tns file oracleBi home location. check once.
Mark if it helps you..
Is there any way , I can check my DAC services are up and running or not in LINUX?
check you tnsnames.ora
find in $ORACLE_HOME/network/admin/tnsnames.ora
find $ORACLE_HOME by echo $ORACLE_HOME
1)How to connect DAC 11g server with fusion middleware(weblogic server)?
Oracle® Fusion Middleware
User’s Guide for Oracle Business Intelligence Data Warehouse
11g Release 1 (11.1.1)
DAC Authentication in Oracle Fusion Middleware (WebLogic Server) Mode
Oracle BI Applications Release (7.9.6.4) Certification Matrix:
This document covers Oracle BI Applications and associated components including:
∙ OEM Informatica PowerCenter 9.0.1 Hot Fix 2 and OEM Informatica PowerCenter 9.1 Hot Fix 2
∙ Oracle Business Intelligence Data Warehouse Administration Console 11g (DAC) version 11.1.1.6.4
Oracle BI Applications 7.9.6.4 is supported with
∙ Oracle Business Intelligence Enterprise Edition version 11.1.1.6.4+ and 11.1.1.7+
(To install Oracle BI Applications on Oracle Business Intelligence Enterprise Edition 11.1.1.7+, see the following document on My Oracle Support:
Installing BI Applications 7.9.6.4 on BI EE 11.1.1.7.0 [ID 1561846.1])
1)I have gone through this document, it doest specify thats i can use DAC 10g with OBIA 7.9.6.4.(if it is possible then whats is the patch number required.)
2)How to connect DAC 11g server with fusion middleware(weblogic server)?
1) According to Certification Matrix of (7.9.6.4) only DAC 11g is possible
2) This process is as follows:
1. DAC Client logs in using FMW authentication:
a. Gets user name and password from user (can be optionally saved on the file
b. Reads the database connection information from the encrypted cwallet.sso file
stored on the file system
c. Logs into the DAC repository.
d. Reads the DAC Server URL from the DAC repository.
e. Authenticates and gets permissions through the DAC Server in the BI domain
using the BI domain URL.
2. DAC Server reads the database connection information from the file system and
connects to the DAC repository upon startup.
3. Automation utilities read the database connection information from the file system
and connect to the DAC repository.
Note: The automation utilities are not interactive
4. DAC Server command line utilities read the DAC Server information from the file
system and send it as a Web service request, which is authenticated with proper
Драйвер odbc возвратил ошибку sqlexecdirectw oracle bi
Odbc driver returned an error (SQLExecDirectW).
Error Details
Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 43119] Query Failed: [nQSError: 17001] Oracle Error code: 12154, message: ORA-12154: TNS:could not resolve the connect identifier specified at OCI call OCIServerAttach. [nQSError: 17014] Could not connect to Oracle database. (HY000)
Answers
It is clear that . Oracle is not connecting.
1) Check RPD Connection pool properties. give correct Datasource name and username/password.
2) If it is not connecting. then problem with tns file.
3)Have you copied tns file oracleBi home location. check once.
Mark if it helps you..
Is there any way , I can check my DAC services are up and running or not in LINUX?
check you tnsnames.ora
find in $ORACLE_HOME/network/admin/tnsnames.ora
find $ORACLE_HOME by echo $ORACLE_HOME
1)How to connect DAC 11g server with fusion middleware(weblogic server)?
Oracle® Fusion Middleware
User’s Guide for Oracle Business Intelligence Data Warehouse
11g Release 1 (11.1.1)
DAC Authentication in Oracle Fusion Middleware (WebLogic Server) Mode
Oracle BI Applications Release (7.9.6.4) Certification Matrix:
This document covers Oracle BI Applications and associated components including:
∙ OEM Informatica PowerCenter 9.0.1 Hot Fix 2 and OEM Informatica PowerCenter 9.1 Hot Fix 2
∙ Oracle Business Intelligence Data Warehouse Administration Console 11g (DAC) version 11.1.1.6.4
Oracle BI Applications 7.9.6.4 is supported with
∙ Oracle Business Intelligence Enterprise Edition version 11.1.1.6.4+ and 11.1.1.7+
(To install Oracle BI Applications on Oracle Business Intelligence Enterprise Edition 11.1.1.7+, see the following document on My Oracle Support:
Installing BI Applications 7.9.6.4 on BI EE 11.1.1.7.0 [ID 1561846.1])
1)I have gone through this document, it doest specify thats i can use DAC 10g with OBIA 7.9.6.4.(if it is possible then whats is the patch number required.)
2)How to connect DAC 11g server with fusion middleware(weblogic server)?
1) According to Certification Matrix of (7.9.6.4) only DAC 11g is possible
2) This process is as follows:
1. DAC Client logs in using FMW authentication:
a. Gets user name and password from user (can be optionally saved on the file
b. Reads the database connection information from the encrypted cwallet.sso file
stored on the file system
c. Logs into the DAC repository.
d. Reads the DAC Server URL from the DAC repository.
e. Authenticates and gets permissions through the DAC Server in the BI domain
using the BI domain URL.
2. DAC Server reads the database connection information from the file system and
connects to the DAC repository upon startup.
3. Automation utilities read the database connection information from the file system
and connect to the DAC repository.
Note: The automation utilities are not interactive
4. DAC Server command line utilities read the DAC Server information from the file
system and send it as a Web service request, which is authenticated with proper
Odbc driver returned an error (SQLExecDirectW).
Do you have any idea for the below error
this error occurs for one report in prod,, the same report works fine in Dev
Odbc driver returned an error (SQLExecDirectW).
Error Codes: OPR4ONWY:U9IM8TAC
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 27002] Near : Syntax error [nQSError: 26012] . (HY000)
Best Answer
Check this
ID 1464133.1
IF helps mark
Document says its bug BUG:13737150 and suggesting
Download and apply OBIEE 11.1.1.6.2 BP1. It is fixed in this version
Edited by: Srini VEERAVALLI on Mar 25, 2013 11:42 AM
Read this
http://docs.oracle.com/cd/E23943_01/bi.1111/e16452/bi_plan.htm#CACIBFHF
Edited by: Srini VEERAVALLI on Mar 25, 2013 11:46 AM
Answers
Check this
ID 1464133.1
IF helps mark
Document says its bug BUG:13737150 and suggesting
Download and apply OBIEE 11.1.1.6.2 BP1. It is fixed in this version
Edited by: Srini VEERAVALLI on Mar 25, 2013 11:42 AM
Read this
http://docs.oracle.com/cd/E23943_01/bi.1111/e16452/bi_plan.htm#CACIBFHF
Edited by: Srini VEERAVALLI on Mar 25, 2013 11:46 AM
In that document the solution is for 11.1.6 version
Here in our company, we are using 11.1.5 so Can you please help me for the solution
Before you conclude that you need to upgrade, (which I doubt as dev and prod are usually same versions), I suggest point dev server to production database and see if you are able to recreate the issue in dev.
Or take report XML from dev and copy in prod, see if that resolves the issue in prod.
It might also be a variable not getting populated in prod if used in report.
Функция SQLExecDirect
Соответствия
Представленная версия: соответствие стандартам ODBC 1,0: ISO 92
Сводка
SQLExecDirect выполняет инструкцию доступный, используя текущие значения переменных маркера параметра, если в инструкции существуют какие-либо параметры. SQLExecDirect — самый быстрый способ отправить инструкцию SQL для однократного выполнения.
Синтаксис
Аргументы
статеменсандле
Входной Маркер инструкции.
статементтекст
Входной оператор SQL для выполнения.
TextLength
Входной Длина *статементтекст в символах.
Возвращаемое значение
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE или SQL_PARAM_DATA_AVAILABLE.
Диагностика
Если SQLExecDirect возвращает либо SQL_ERROR, либо SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE можно получить, вызвав SQLGetDiagRec с параметром handletype SQL_HANDLE_STMT и маркером статеменсандле. В следующей таблице перечислены значения SQLSTATE, обычно возвращаемые функцией SQLExecDirect , и объясняется каждый из них в контексте этой функции. Нотация «(DM)» предшествует описаниям SQLSTATE, возвращаемым диспетчером драйверов. Код возврата, связанный с каждым значением SQLSTATE, имеет SQL_ERROR, если не указано иное.
SQLSTATE | Ошибка | Описание |
---|---|---|
01000 | Общее предупреждение | Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
01001 | Конфликт операций с курсором | *Статементтекст содержал инструкцию позиционированного обновления или удаления, и ни одна строка, ни несколько строк не были обновлены или удалены. (Дополнительные сведения об обновлениях более чем в одной строке см. в описании атрибута SQL_ATTR_SIMULATE_CURSOR в SQLSetStmtAttr.) |
(Функция возвращает SQL_SUCCESS_WITH_INFO.)
SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ ATTR_SIMULATE_CURSOR
(Функция возвращает SQL_SUCCESS_WITH_INFO.)
(Функция возвращает SQL_SUCCESS_WITH_INFO.)
SQLBindParameter был вызван с параметервалуептр , для которого задан пустой указатель, StrLen_or_IndPtr не задано значение SQL_NULL_DATA или SQL_DATA_AT_EXEC, а инпутаутпуттипе не задано значение SQL_PARAM_OUTPUT, чтобы число параметров, указанное в SQLBindParameter , было больше числа параметров в инструкции SQL, содержащейся в *статементтекст.
Значение данных, возвращаемое для параметра, привязанного как SQL_PARAM_INPUT_OUTPUT или SQL_PARAM_OUTPUT, не может быть преобразовано в тип данных, определяемый аргументом ValueType в SQLBindParameter.
(Если не удалось преобразовать значения данных для одной или нескольких строк, но одна или несколько строк были успешно возвращены, эта функция возвращает SQL_SUCCESS_WITH_INFO.)
Эта ошибка возникает, если тип параметра — SQL_PARAM_INPUT_OUTPUT, а * StrLen_or_IndPtr , указанный в SQLBindParameter , не равен SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC (len) или SQL_DATA_AT_EXEC.
Возврат числового значения (в виде числового или строкового) для одного или нескольких входных, выходных или выходных параметров приведет к усечению всего числа (в отличие от дробной части).
Входной/выходной или выходной параметр привязан к структуре даты, времени или метки времени C, а значение в возвращенном параметре было соответственно недействительной дате, времени или метке времени. (Функция возвращает SQL_SUCCESS_WITH_INFO.)
Выражение DateTime, вычисленное для входного/выходного или выходного параметра, привело к недопустимой структуре даты, времени или метки времени C.
Арифметическое выражение, вычисленное для входного/выходного или выходного параметра, привело к делению на нуль.
* Статементтекст содержал параметр интервала с более чем одним полем, которое при преобразовании в числовой тип данных столбца не имело представления числового типа данных.
* статементтекст содержал данные параметров, которые были присвоены интервалу SQL типу, и не было представления значения типа C в поле interval SQL type.
назначение входного/выходного или выходного параметра, который был точным числом или интервалом, SQL тип с типом interval C привел к утрате значащих цифр.
Если входной/выходной или выходной параметр был назначен структуре интервала C, в структуре данных интервала отсутствовало представления данных.
при возвращении входного/выходного или выходного параметра тип SQL был точным или приблизительным числовым, типом datetime или интервалом данных. Тип C — SQL_C_CHAR; и значение в столбце не было допустимым литералом связанного SQL типа.
Курсор был открыт, но не позиционирован на статеменсандле.
*Статементтекст содержал инструкцию позиционированного обновления или удаления, и курсор был помещен перед началом результирующего набора или после конца результирующего набора.
у пользователя отсутствует разрешение на выполнение инструкции SQL, содержащейся в *статементтекст.
*Статементтекст содержит инструкцию ALTER TABLE , а указанное имя таблицы не существует.
*Статементтекст содержал инструкцию Create View , а имя таблицы или представления, определенное спецификацией запроса, не существовало.
*Статементтекст содержит инструкцию CREATE INDEX , а указанное имя таблицы не существует.
*Статементтекст содержит инструкцию Grant или REVOKE , а указанное имя таблицы или представления не существует.
*Статементтекст содержит инструкцию SELECT , а указанное имя таблицы или представления не существует.
*Статементтекст содержит инструкцию Delete, INSERT или Update , а указанное имя таблицы не существует.
*Статементтекст содержит оператор CREATE TABLE , а таблица, указанная в ограничении (ссылающаяся на таблицу, отличную от создаваемой), не существует.
*Статементтекст содержит инструкцию CREATE SCHEMA , а указанное имя таблицы или представления не существует.
*Статементтекст содержит инструкцию CREATE SCHEMA , а указанное имя индекса уже существует.
*Статементтекст содержит инструкцию Grant или REVOKE , и указанное имя столбца не существует.
*Статементтекст содержит инструкцию SELECT, Delete, INSERT или Update , а указанное имя столбца не существует.
*Статементтекст содержит инструкцию CREATE TABLE , а столбец, указанный в ограничении (ссылающийся на таблицу, отличную от создаваемой), не существует.
*Статементтекст содержит инструкцию CREATE SCHEMA , а указанное имя столбца не существует.
Аргумент статементтекст содержал инструкцию Update , выполненную в просматриваемой таблице, или таблицу, производную от просматриваемой таблицы, созданной с помощью параметра WITH CHECK, что одна или несколько строк, затронутых инструкцией Update , больше не будут присутствовать в просматриваемой таблице.
Функция была вызвана и до ее завершения была вызвана SQLCancel или склканцелхандле в статеменсандле из другого потока многопоточного приложения.
(DM) SQLExecute, SQLExecDirect или SQLMoreResults были вызваны для статеменсандле и возвращены SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров.
(DM) вызывается асинхронно исполняемая функция (не эта одна) для статеменсандле и все еще выполнялась при вызове этой функции.
(DM) SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos были вызваны для статеменсандле и возвращены SQL_NEED_DATA. Эта функция была вызвана перед отправкой данных для всех параметров или столбцов данных, выполняемых во время выполнения.
Значение параметра, заданное с помощью SQLBindParameter, является пустым указателем, а значение длины параметра не равно 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM или меньше или равно SQL_LEN_DATA_AT_EXEC_OFFSET.
Значение параметра, заданное с помощью SQLBindParameter, не является пустым указателем; тип данных C — SQL_C_BINARY или SQL_C_CHAR; и значение длины параметра было меньше 0, но не было SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM или меньше или равно SQL_LEN_DATA_AT_EXEC_OFFSET.
Значение длины параметра, связанное с SQLBindParameter , было установлено в SQL_DATA_AT_EXEC; тип SQL: SQL_LONGVARCHAR, SQL_LONGVARBINARY или тип данных long, относящийся к источнику данных; а тип сведений SQL_NEED_LONG_DATA_LEN в SQLGetInfo — «Y».
Атрибуту инструкции SQL_ATTR_USE_BOOKMARKS было присвоено значение SQL_UB_VARIABLE, а атрибуту инструкции SQL_ATTR_CURSOR_TYPE задан тип курсора, для которого драйвер не поддерживает закладки.
Комментарии
приложение вызывает SQLExecDirect для отправки оператора SQL в источник данных. Дополнительные сведения о прямом выполнении см. в разделе прямое выполнение. драйвер изменяет инструкцию для использования формы SQL, используемой источником данных, а затем отправляет его в источник данных. В частности, драйвер изменяет escape-последовательности, используемые для определения определенных функций в SQL. Синтаксис escape-последовательностей см. в разделе Escape-последовательности в ODBC.
приложение может включать один или несколько маркеров параметров в оператор SQL. чтобы включить маркер параметра, приложение внедряет вопросительный знак (?) в инструкцию SQL в соответствующей позиции. Дополнительные сведения о параметрах см. в разделе Параметры инструкции.
если инструкция SQL является инструкцией SELECT и если приложение с именем SQLSetCursorName связывает курсор с инструкцией, то драйвер использует указанный курсор. В противном случае драйвер создает имя курсора.
если источник данных находится в режиме фиксации вручную (требует явной инициации транзакции) и транзакция еще не запущена, драйвер инициирует транзакцию перед отправкой инструкции SQL. Дополнительные сведения см. в разделе режим фиксации вручную.
Если приложение использует SQLExecDirect для отправки инструкций commit или ROLLBACK , оно не будет взаимодействовать между продуктами СУБД. Для фиксации или отката транзакции приложение вызывает SQLEndTran.
Если SQLExecDirect встречает параметр данных при выполнении, он возвращает SQL_NEED_DATA. Приложение отправляет данные с помощью метод SQLParamData и SQLPutData. См. раздел SQLBindParameter, метод SQLParamData, SQLPutDataи Отправка длинных данных.
Если SQLExecDirect выполняет инструкцию обновления, вставки или удаления, которая не влияет ни на какие строки в источнике данных, вызов SQLExecDirect возвращает SQL_NO_DATA.
если значение атрибута оператора SQL_ATTR_PARAMSET_SIZE больше 1, а инструкция SQL содержит по крайней мере один маркер параметра, SQLExecDirect будет выполнять инструкцию SQL один раз для каждого набора значений параметров из массивов, на которые указывает аргумент параметервалуепоинтер в вызове SQLBindParameter. Дополнительные сведения см. в разделе массивы значений параметров.
Если закладки включены и выполняется запрос, который не поддерживает закладки, драйвер должен попытаться привести среду к той, которая поддерживает закладки, изменив значение атрибута и возвращая SQLSTATE 01S02 (значение параметра изменено). Если атрибут не может быть изменен, драйвер должен возвращать значение SQLSTATE HY024 (недопустимое значения атрибута).
при использовании пулов соединений приложение не должно выполнять инструкции SQL, которые изменяют базу данных или контекст базы данных, например инструкцию USE database в SQL Server, которая изменяет каталог, используемый источником данных.