// Run the query and retrieve the result line by linei is int = 0SQLExec("SELECT LASTNAME, FIRSTNAME, EXTENSION, PHOTO FROM CUSTOMER", "QRY1")WHILE SQLFetch("QRY1") = 0// There is still another line to readi++// Retrieve the dataLASTNAME[i] = SQLGetCol("QRY1", 1)FIRSTNAME[i] = SQLGetCol("QRY1", 2)EXTENSION[i] = SQLGetCol("QRY1", 3){"IMAGE"+i} = SQLGetMemo("QRY1", 4)ENDSQLClose("QRY1")

False otherwise. The query execution is asynchronous: the function requests the query execution then the current process continues to run without retrieving the query result. The result of SQLExec can only be used to manage the connection problems. We advise you to check the proper query execution in the <Procedure name> procedure.

<Text of SQL query>: Character string (with quotes)

SQL code of query to run.

<Query name>: Character string (with quotes)

Name associated with the query text.

<Procedure name>: Character string (with quotes)

Name of WLanguage procedure to run during the execution of the SQL query.
This procedure can be a browser procedure global to the project or a browser procedure local to the page that contains the code currently run. This procedure has the following format:

PROCEDURE Procedure Name(<Query name>)

where <Query name> is the name of query currently run.

This procedure is started at the end of real query execution (regardless of the query result). This browser procedure is used to:

check the proper execution of the query. SQLInfo is automatically run during the call to the procedure. Therefore, all the SQL variables are positioned. If an error occurred, SQL.Error will differ from "00000". The error message is returned by the SQL.MesError variable.

browse the query result.

If new queries are run in this procedure (to add records for example), you can:

use the same procedure: the parameter of this procedure is used to find out the query currently run.

use a different browser procedure to test the result of these new queries.

False otherwise. The query execution is asynchronous: the function requests the query execution then the current process continues to run without retrieving the query result. The result of SQLExec can only be used to manage the connection problems. We advise you to check the proper query execution in the <Procedure name> procedure.

<Text of SQL query>: Character string (with quotes)

SQL code of query to run.

<Query name>: Character string (with quotes)

Name associated with the query text.

<Procedure name>: Character string (with quotes)

Name of WLanguage procedure to run during the execution of the SQL query.
This procedure can be a browser procedure global to the project or a browser procedure local to the page that contains the code currently run. This procedure has the following format:

PROCEDURE Procedure Name(<Query name>)

where <Query name> is the name of query currently run.

This procedure is started at the end of real query execution (regardless of the query result). This browser procedure is used to:

check the proper execution of the query. SQLInfo is automatically run during the call to the procedure. Therefore, all the SQL variables are positioned. If an error occurred, SQL.Error will differ from "00000". The error message is returned by the SQL.MesError variable.

browse the query result.

If new queries are run in this procedure (to add records for example), you can:

use the same procedure: the parameter of this procedure is used to find out the query currently run.

use a different browser procedure to test the result of these new queries.

False otherwise. The query execution is asynchronous: the function requests the query execution then the current process continues to run without retrieving the query result. The result of SQLExec can only be used to manage the connection problems. We advise you to check the proper query execution in the <Procedure name> procedure.

<Text of SQL query>: Character string (with quotes)

SQL code of query to run.

<Query name>: Character string (with quotes)

Name associated with the query text.

<Procedure name>: Character string (with quotes)

Name of WLanguage procedure to run during the execution of the SQL query.
This procedure can be a browser procedure global to the project or a browser procedure local to the page that contains the code currently run. This procedure has the following format:

PROCEDURE Procedure Name(<Query name>)

where <Query name> is the name of query currently run.

This procedure is started at the end of real query execution (regardless of the query result). This browser procedure is used to:

check the proper execution of the query. SQLInfo is automatically run during the call to the procedure. Therefore, all the SQL variables are positioned. If an error occurred, SQL.Error will differ from "00000". The error message is returned by the SQL.MesError variable.

browse the query result.

If new queries are run in this procedure (to add records for example), you can:

use the same procedure: the parameter of this procedure is used to find out the query currently run.

use a different browser procedure to test the result of these new queries.

Remarks

Running the query

The information regarding the query execution is returned by SQLInfo. The SQL.NbCol variable contains the number of columns found in the query result.

To write a binary memo in a table (using a SQL UPDATE or INSERT command), the following syntax must be used in the text of the query:

{WDBinaryMemo('<FileName>' [,'File']}

where:

File (default value) indicates that the memo is a binary memo (coming from a file).

WDBinaryMemo is a reserved word.

<FileName> is the physical name of a file.

Versions 19 and laterCase of access to external databases via a Webservice: The file path corresponds to a path local to the application that runs the Webservice (which means a path on the mobile device).

New in version 19Case of access to external databases via a Webservice: The file path corresponds to a path local to the application that runs the Webservice (which means a path on the mobile device).

Case of access to external databases via a Webservice: The file path corresponds to a path local to the application that runs the Webservice (which means a path on the mobile device).

{WDBinaryMemo('<FileName>' [,'TextFile']}

where:

TextFile indicates that the memo is a text memo (coming from a file).

WDBinaryMemo is a reserved word.

<FileName> is the physical name of a file.

Versions 19 and laterCase of access to external databases via a Webservice: The file path corresponds to a path local to the application that runs the Webservice (which means a path on the mobile device).

New in version 19Case of access to external databases via a Webservice: The file path corresponds to a path local to the application that runs the Webservice (which means a path on the mobile device).

Case of access to external databases via a Webservice: The file path corresponds to a path local to the application that runs the Webservice (which means a path on the mobile device). For example:

Remark: Inserting binary memos into a HFSQL file with the SQL functions is not possible and it triggers an error. The error message is as follows: "Unable to initialize the query. Unexpected {WDBinaryMemo( character".

SQL query (HExecuteSQLQuery or queries created in the query editor)

When using the SQL DELETE, INSERT or UPDATE statements, no integrity check and no duplicate check are performed on an HFSQL database. This feature is not available in this version.

Solution: Use the HFSQL functions (HDelete, HAdd or HModify) on your data files. The integrity check and the duplicate check will be automatically performed.

HExecuteSQLQuery can also be used to run an SQL query. The parameters of these two functions are identical but their order is reversed: indeed, HExecuteSQLQuery specifies the name of the query first then the text of the query (using the same standard as all the HFSQL functions).

The syntax of SQLExec is kept for backward compatibility.

SQLExec and the threads

When running SQLExec in a secondary thread, the connection used must be established in the same thread: the connection cannot be established in the main thread (project or window). The connection established by SQLConnect is not shared in the other threads.

Limitations in PHP

The binary memos cannot be handled in this version. The query is run on a MySQL database.

// Run the query and retrieve the result line by linei is int = 0SQLExec("SELECT LASTNAME, FIRSTNAME, EXTENSION, PHOTO FROM CUSTOMER", "QRY1") // <--------WHILE SQLFetch("QRY1") = 0 // There is still another line to readi++// Retrieve the dataLASTNAME[i] = SQLGetCol("QRY1", 1)FIRSTNAME[i] = SQLGetCol("QRY1", 2)EXTENSION[i] = SQLGetCol("QRY1", 3){"IMAGE"+i} = SQLGetMemo("QRY1", 4)ENDSQLClose("QRY1")