PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE


Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • Lectura de datos durante la inicialización
  • Texto de la consulta SQL
  • Ejecutar una consulta SQL con parámetros
  • inyección SQL: ¿Cómo prevenirlo?
  • Combinaciones
  • Uso de la constante hQueryWithoutCorrection?
  • Condición de una clave compuesta en una consulta SQL
  • Consultas sobre archivos de datos HFSQL
  • Optimización para ejecutar la misma consulta varias veces (sólo accesos nativos de Oracle y SQL Server)
  • Especificación y recuperación de valores al ejecutar una consulta (procedimientos almacenados)
  • Consultas SQL (función HExecuteSQLQuery o ejecución de consultas SQL creadas en el editor de consultas)
  • Consultas de navegación (HReadFirst)
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Inicializa una consulta escrita en lenguaje SQL y la declara al motor HFSQL. Esta consulta puede corresponder a:
  • el código SQL introducido directamente en la función HExecuteSQLQuery.
  • Versiones 23 y posteriores
    una variable de tipo SQL Query.
    Nueva funcionalidad versión 23
    una variable de tipo SQL Query.
    una variable de tipo SQL Query.
Se podrá navegar por el resultado de la consulta. Si ya existe una consulta con el mismo nombre, se reemplaza la consulta. El resultado se vuelve a calcular.
Característica específica de HFSQL : Las consultas SQL ejecutadas en una base de datos HFSQL Clásico, Móvil o Cliente/Servidor pueden contener funciones WLanguage. Vea Uso de una función WLanguage en una consulta SQL para más detalles.
Atención: Para establecer la posición en el primer Record del resultado de la consulta, utilice HReadFirst, por ejemplo.
Para liberar recursos de una consulta introducida en la función HExecuteSQLQuery, utilice:
Observación: no se podrá iniciar una consulta si:
  • el nombre de la consulta ya se utiliza en el análisis en curso (nombre de archivo de datos o nombre definido por una de las siguientes funciones: HDeclare, HDeclareExternal, HDescribeFile).
  • se encuentra un error de sintaxis en la consulta.
Versiones 16 y posteriores
Java Esta función ahora está disponible para aplicaciones Java.
Android Esta función ahora está disponible para aplicaciones Android.
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
Versiones 21 y posteriores
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Nueva funcionalidad versión 21
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Observación: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
Nueva funcionalidad versión 16
Java Esta función ahora está disponible para aplicaciones Java.
Android Esta función ahora está disponible para aplicaciones Android.
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
Versiones 21 y posteriores
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Nueva funcionalidad versión 21
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Observación: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
Java Esta función ahora está disponible para aplicaciones Java.
Android Esta función ahora está disponible para aplicaciones Android.
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
Versiones 21 y posteriores
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Nueva funcionalidad versión 21
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Observación: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
Versiones 17 y posteriores
iPhone/iPad Esta función ahora está disponible para aplicaciones iPhone/iPad.
Nueva funcionalidad versión 17
iPhone/iPad Esta función ahora está disponible para aplicaciones iPhone/iPad.
iPhone/iPad Esta función ahora está disponible para aplicaciones iPhone/iPad.
Versiones 18 y posteriores
Widget Android Esta función ahora está disponible en modo Android Widget.
Universal Windows 10 App Esta función ahora está disponible en modo Windows Store apps.
Nueva funcionalidad versión 18
Widget Android Esta función ahora está disponible en modo Android Widget.
Universal Windows 10 App Esta función ahora está disponible en modo Windows Store apps.
Widget Android Esta función ahora está disponible en modo Android Widget.
Universal Windows 10 App Esta función ahora está disponible en modo Windows Store apps.
Ejemplo
QryCustomer is Data Source
// Initialize the "Customer" query
HExecuteSQLQuery(CustomerQry, "SELECT NAME FROM CUSTOMER")
TaskQry is Data Source
// Initialize the "TaskQry" query
// This query is using a WLanguage function
// This query selects the tasks exceeding 5 days
HExecuteSQLQuery(TaskQry, ...
"SELECT Task.Caption FROM Task" +...
"WHERE WL.DateDifference(Task.StartTime, Task.EndDate) > 5")
// Dynamic modification of the LIMIT condition of a SQL query

QRY is Data Source

sMyQry is string = [
SELECT * FROM
ZIPCODES
%1
]

sMyQry = StringBuild(sMyQry, "LIMIT 1, 10")
IF NOT HExecuteSQLQuery(QRY, hQueryDefault, sMyQry) THEN
Error(HErrorInfo())
ELSE
Info("The query contains " + HNbRec(QRY) + " records.")
END
Sintaxis

Ejecutando una consulta SQL (sin conexión) Ocultar los detalles

<Result> = HExecuteSQLQuery(<Query> [, <Mode>] , <Texto de la consulta SQL>)
<Result>: Boolean
  • True si se inicializó la consulta SQL,
  • False en caso contrario. La función HErrorInfo permite obtener más detalles sobre el problema.
<Query>: Character string (with or without quotes) or data source
  • Nombre de la consulta que se ejecutará. Este nombre se utiliza para manipular el resultado de <Text of SQL query> por programación. Si ya se ha declarado una consulta con el mismo nombre, se reemplaza por la nueva consulta.
  • Versiones 23 y posteriores
    Nombre de consulta SQL Variable que contiene el código SQL de la consulta. En este caso, no se debe especificar el parámetro <Text of SQL query>..
    PHP Este tipo de variable no está disponible.
    Nueva funcionalidad versión 23
    Nombre de consulta SQL Variable que contiene el código SQL de la consulta. En este caso, no se debe especificar el parámetro <Text of SQL query>..
    PHP Este tipo de variable no está disponible.
    Nombre de consulta SQL Variable que contiene el código SQL de la consulta. En este caso, no se debe especificar el parámetro <Text of SQL query>..
    PHP Este tipo de variable no está disponible.
<Mode>: Optional Integer constant
Opción para iniciar la consulta:
hWithFilter
(constante que se puede combinar con las otras constantes)
Si se especifica este parámetro:
  • el resultado de la consulta corresponde a una selección de registros de tipo filtro si el motor HFSQL lo permite. De lo contrario, el resultado de la consulta corresponde a una vista HFSQL.
  • las siguientes operaciones no están disponibles: buscar en el resultado de la consulta, consulta a partir de una consulta, vista a partir de una consulta, consulta a partir de una vista.
  • los elementos de navegación especificados al navegar por el resultado no se tienen en cuenta.
  • la lupa no está disponible en las tablas relacionadas con una consulta.
  • no se puede utilizar la función HNbRec en las consultas.
    Atención: si se especifica esta opción, la constante hModifyFile se utiliza automáticamente.
Si no se especifica este parámetro (por Default ):
  • el resultado de la consulta corresponde a una vista HFSQL.
  • se pueden realizar las siguientes operaciones en las consultas: buscar en el resultado de la consulta, consulta a partir de una consulta, vista a partir de una consulta, consulta a partir de una vista.
  • los elementos de navegación especificados al navegar por el resultado se tienen en cuenta.
  • la lupa está disponible en las tablas relacionadas con una consulta.
  • se puede utilizar la función HNbRec en las consultas.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hWithTransactionLa consulta se ejecuta en una transacción.
Se inicia una transacción, los registros se bloquean durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta).
Si la consulta no puede finalizar correctamente (registros bloqueados, corte de energía, etc.), se cancela la transacción y los archivos de datos se restauran al estado en el que se encontraban antes de ejecutar la consulta).
Observación: la ejecución de la consulta puede ralentizarse.
AndroidWidget Android iPhone/iPadWindows MobileJavaPHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
iPhone/iPadWindows MobileJavaPHP Esta constante no está disponible.
hModifyFile
(constante que se puede combinar con las otras constantes)
  • En archivos de datos HFSQL: Cuando se modifica el resultado de una consulta (funciones HAdd, HWrite, HModify, HCross, HDelete), las modificaciones se aplican a los archivos de datos que corresponden a la consulta.
    Si no se especifica esta opción, solo se modifica el resultado de la consulta.
    Vea Modificar el contenido de una consulta para más detalles.
  • En archivos de datos con un formato distinto a HFSQL, no es necesario utilizar la función hModifyFile: los archivos de datos utilizados en la consulta se modifican automáticamente al modificar el resultado de la consulta.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hQueryBreakableEl inicio de la consulta se puede interrumpir con la tecla ESC.
AndroidWidget Android Universal Windows 10 AppPHP Esta constante no está disponible.
WEBDEV - Código ServidorProcedimientos almacenados Esta constante no se tiene en cuenta.
Java Acceso con JDBC: Esta constante no está disponible.
HFSQL Client/Server La tecla Esc debe pulsarse en el equipo cliente.
hQueryDefault
(valor predeterminado)
La consulta se inicia sin interrupción.
hQueryWithoutCorrection
OLE DBConectores Nativos El motor HFSQL no verifica la consulta. Esta opción debe utilizarse si la consulta contiene comandos específicos de un tipo de conexión (Oracle, SQL Server, etc.)
Atención: si se utiliza esta constante:
  • se debe especificar el nombre de la conexión (parámetro <Conexión>).
  • no se puede utilizar la siguiente función en la consulta: HFilter.
  • no se puede cancelar una condición asignándola a NULL.
  • no se debe especificar ninguna posición de búsqueda en las siguientes funciones: HLast, HReadLast, HReadFirst, HFirst, HSeekLast, HSeekFirst.
hQueryWithoutHFCorrection
HFSQL El motor HFSQL no verifica el formato del archivo de datos (con o sin espacios). Se debe utilizar si la consulta manipula archivos de datos HFSQL con un formato que se completa con espacios y con un formato que no se completa con espacios.
Universal Windows 10 App Esta constante no está disponible.
hNoBind
Conectores Nativos SQL Server, Oracle, Sybase: Se utiliza para ejecutar una consulta sin habilitar el enlace.
Versiones 21 y posteriores
hNoHourglass
Nueva funcionalidad versión 21
hNoHourglass
hNoHourglass
La lectura del resultado de una consulta podría bloquearse. En ese caso, se muestra un reloj de arena. Esta constante se utiliza para que no se muestre el reloj de arena.
AndroidWidget Android PHP Esta constante no está disponible.
hSQLUnicode
Windows Mobile Se utiliza para especificar que el texto de la consulta debe enviarse en formato Unicode al servidor.
hYieldEn las consultas UPDATE y DELETE, que se utilizan en un gran número de registros y suelen tomar mucho tiempo, esta constante devuelve el control a las demás aplicaciones que utilizan los archivos de datos.
En este caso:
  • la consulta se ejecuta un poco más lento,
  • el servidor de archivos no se satura,
  • los demás usuarios de los archivos de datos pueden continuar accediendo a ellos sin ningún tipo de bloqueo.
HFSQL Client/ServerOLE DBConectores Nativos Esta constante no se tiene en cuenta.

AndroidWidget Android PHP Esta constante no está disponible.

Java Acceso con JDBC: Esta constante no está disponible.
hCheckDuplicatesActiva la gestión de duplicados durante la ejecución de la consulta. Si se detecta un error de duplicados, no se ejecuta la consulta.
Esta constante fuerza la constante hWithTransaction . Se inicia una transacción, los registros se bloquean durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta. Si la aplicación se detiene durante la ejecución de la consulta (corte de energía, por ejemplo), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
Observación: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server Si no se especifica la constante hCheckDuplicates, se desactiva la gestión de duplicados. Si el usuario no tiene permisos para desactivar la gestión de duplicados (función HModifyDatabaseRights) y se debe realizar la gestión de duplicados, se muestra un error de permisos.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hCheckIntegrityActiva la gestión de integridad durante la ejecución de la consulta. Si se detecta un error de integridad, no se ejecuta la consulta.
Esta constante fuerza la constante de hWithTransaction. Se inicia una transacción, los registros se bloquean durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta. Si la aplicación se detiene durante la ejecución de la consulta (corte de energía, por ejemplo), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
Observación: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server Si no se especifica la constante hCheckIntegrity, se desactiva la gestión de la integridad. Sin embargo, se produce un error si se debe realizar una operación de gestión de la integridad, pero el usuario no tiene los derechos para desactivar la gestión de la integridad (HModifyDatabaseRights).
AndroidWidget Android Windows MobilePHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
Versiones 16 y posteriores
Java Acceso con JDBC: Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
AndroidWidget Android Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
Nueva funcionalidad versión 16
Java Acceso con JDBC: Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
AndroidWidget Android Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
Java Acceso con JDBC: Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
AndroidWidget Android Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
<Texto de la consulta SQL>: Character string (with quotes)
Texto de la consulta SQL a ejecutar. Este texto puede corresponder a una cadena de caracteres en formato ANSI o en formato Unicode..
Versiones 16 y posteriores
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
Nueva funcionalidad versión 16
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
PHP Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
Versiones 23 y posteriores
Este parámetro no está disponible si <Nombre de consulta> corresponde a una variable de tipo SQL Query.
Nueva funcionalidad versión 23
Este parámetro no está disponible si <Nombre de consulta> corresponde a una variable de tipo SQL Query.
Este parámetro no está disponible si <Nombre de consulta> corresponde a una variable de tipo SQL Query.

Ejecutar una consulta SQL a través de una conexión Ocultar los detalles

<Result> = HExecuteSQLQuery(<Query> [, <Connection> [, <Mode>]] , <Texto de la consulta SQL>)
<Result>: Boolean
  • True si se inicializó la consulta SQL,
  • False en caso contrario. La función HErrorInfo permite obtener más detalles sobre el problema.
<Query>: Character string (with or without quotes) or data source
  • Nombre de la consulta que se ejecutará. Este nombre se utiliza para manipular el resultado de <Text of SQL query> por programación. Si ya se ha declarado una consulta con el mismo nombre, se reemplaza por la nueva consulta.
  • Versiones 23 y posteriores
    Nombre de consulta SQL Variable que contiene el código SQL de la consulta. En este caso, no se debe especificar el parámetro <Text of SQL query>..
    PHP Este tipo de variable no está disponible.
    Nueva funcionalidad versión 23
    Nombre de consulta SQL Variable que contiene el código SQL de la consulta. En este caso, no se debe especificar el parámetro <Text of SQL query>..
    PHP Este tipo de variable no está disponible.
    Nombre de consulta SQL Variable que contiene el código SQL de la consulta. En este caso, no se debe especificar el parámetro <Text of SQL query>..
    PHP Este tipo de variable no está disponible.
<Connection>: Optional character string or Connection variable
Connection solía ejecutar la consulta. Esta conexión corresponde a: <Resultado> es set a False si este parámetro no corresponde a una conexión existente.
<Mode>: Optional Integer constant
Opción para iniciar la consulta:
hWithFilter
(constante que se puede combinar con las otras constantes)
Si se especifica este parámetro:
  • el resultado de la consulta corresponde a una selección de registros de tipo filtro si el motor HFSQL lo permite. De lo contrario, el resultado de la consulta corresponde a una vista HFSQL.
  • las siguientes operaciones no están disponibles: buscar en el resultado de la consulta, consulta a partir de una consulta, vista a partir de una consulta, consulta a partir de una vista.
  • los elementos de navegación especificados al navegar por el resultado no se tienen en cuenta.
  • la lupa no está disponible en las tablas relacionadas con una consulta.
  • no se puede utilizar la función HNbRec en las consultas.
    Atención: si se especifica esta opción, la constante hModifyFile se utiliza automáticamente.
Si no se especifica este parámetro (por Default ):
  • el resultado de la consulta corresponde a una vista HFSQL.
  • se pueden realizar las siguientes operaciones en las consultas: buscar en el resultado de la consulta, consulta a partir de una consulta, vista a partir de una consulta, consulta a partir de una vista.
  • los elementos de navegación especificados al navegar por el resultado se tienen en cuenta.
  • la lupa está disponible en las tablas relacionadas con una consulta.
  • se puede utilizar la función HNbRec en las consultas.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hWithTransactionLa consulta se ejecuta en una transacción.
Se inicia una transacción, los registros se bloquean durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta).
Si la consulta no puede finalizar correctamente (registros bloqueados, corte de energía, etc.), se cancela la transacción y los archivos de datos se restauran al estado en el que se encontraban antes de ejecutar la consulta).
Observación: la ejecución de la consulta puede ralentizarse.
AndroidWidget Android iPhone/iPadWindows MobileJavaPHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
iPhone/iPadWindows MobileJavaPHP Esta constante no está disponible.
hModifyFile
(constante que se puede combinar con las otras constantes)
  • En archivos de datos HFSQL: Cuando se modifica el resultado de una consulta (funciones HAdd, HWrite, HModify, HCross, HDelete), las modificaciones se aplican a los archivos de datos que corresponden a la consulta.
    Si no se especifica esta opción, solo se modifica el resultado de la consulta.
    Vea Modificar el contenido de una consulta para más detalles.
  • En archivos de datos con un formato distinto a HFSQL, no es necesario utilizar la función hModifyFile: los archivos de datos utilizados en la consulta se modifican automáticamente al modificar el resultado de la consulta.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hQueryBreakableEl inicio de la consulta se puede interrumpir con la tecla ESC.
AndroidWidget Android Universal Windows 10 AppPHP Esta constante no está disponible.
WEBDEV - Código ServidorProcedimientos almacenados Esta constante no se tiene en cuenta.
Java Acceso con JDBC: Esta constante no está disponible.
HFSQL Client/Server La tecla Esc debe pulsarse en el equipo cliente.
hQueryDefault
(valor predeterminado)
La consulta se inicia sin interrupción.
hQueryWithoutCorrection
OLE DBConectores Nativos El motor HFSQL no verifica la consulta. Esta opción debe utilizarse si la consulta contiene comandos específicos de un tipo de conexión (Oracle, SQL Server, etc.)
Atención: si se utiliza esta constante:
  • se debe especificar el nombre de la conexión (parámetro <Conexión>).
  • no se puede utilizar la siguiente función en la consulta: HFilter.
  • no se puede cancelar una condición asignándola a NULL.
  • no se debe especificar ninguna posición de búsqueda en las siguientes funciones: HLast, HReadLast, HReadFirst, HFirst, HSeekLast, HSeekFirst.
hQueryWithoutHFCorrection
HFSQL El motor HFSQL no verifica el formato del archivo de datos (con o sin espacios). Se debe utilizar si la consulta manipula archivos de datos HFSQL con un formato que se completa con espacios y con un formato que no se completa con espacios.
Universal Windows 10 App Esta constante no está disponible.
hNoBind
Conectores Nativos SQL Server, Oracle, Sybase: Se utiliza para ejecutar una consulta sin habilitar el enlace.
Versiones 21 y posteriores
hNoHourglass
Nueva funcionalidad versión 21
hNoHourglass
hNoHourglass
La lectura del resultado de una consulta podría bloquearse. En ese caso, se muestra un reloj de arena. Esta constante se utiliza para que no se muestre el reloj de arena.
AndroidWidget Android PHP Esta constante no está disponible.
hSQLUnicode
Windows Mobile Se utiliza para especificar que el texto de la consulta debe enviarse en formato Unicode al servidor.
hYieldEn las consultas UPDATE y DELETE, que se utilizan en un gran número de registros y suelen tomar mucho tiempo, esta constante devuelve el control a las demás aplicaciones que utilizan los archivos de datos.
En este caso:
  • la consulta se ejecuta un poco más lento,
  • el servidor de archivos no se satura,
  • los demás usuarios de los archivos de datos pueden continuar accediendo a ellos sin ningún tipo de bloqueo.
HFSQL Client/ServerOLE DBConectores Nativos Esta constante no se tiene en cuenta.

AndroidWidget Android PHP Esta constante no está disponible.

Java Acceso con JDBC: Esta constante no está disponible.
hCheckDuplicatesActiva la gestión de duplicados durante la ejecución de la consulta. Si se detecta un error de duplicados, no se ejecuta la consulta.
Esta constante fuerza la constante hWithTransaction . Se inicia una transacción, los registros se bloquean durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta. Si la aplicación se detiene durante la ejecución de la consulta (corte de energía, por ejemplo), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
Observación: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server Si no se especifica la constante hCheckDuplicates, se desactiva la gestión de duplicados. Si el usuario no tiene permisos para desactivar la gestión de duplicados (función HModifyDatabaseRights) y se debe realizar la gestión de duplicados, se muestra un error de permisos.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hCheckIntegrityActiva la gestión de integridad durante la ejecución de la consulta. Si se detecta un error de integridad, no se ejecuta la consulta.
Esta constante fuerza la constante de hWithTransaction. Se inicia una transacción, los registros se bloquean durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta. Si la aplicación se detiene durante la ejecución de la consulta (corte de energía, por ejemplo), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
Observación: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server Si no se especifica la constante hCheckIntegrity, se desactiva la gestión de la integridad. Sin embargo, se produce un error si se debe realizar una operación de gestión de la integridad, pero el usuario no tiene los derechos para desactivar la gestión de la integridad (HModifyDatabaseRights).
AndroidWidget Android Windows MobilePHP Esta constante no está disponible.
AndroidWidget Android Esta constante solo está disponible para bases de datos HFSQL. Esta constante no está disponible para bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
Versiones 16 y posteriores
Java Acceso con JDBC: Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
AndroidWidget Android Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
Nueva funcionalidad versión 16
Java Acceso con JDBC: Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
AndroidWidget Android Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
Java Acceso con JDBC: Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
AndroidWidget Android Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
<Texto de la consulta SQL>: Character string (with quotes)
Texto de la consulta SQL a ejecutar. Este texto puede corresponder a una cadena de caracteres en formato ANSI o en formato Unicode..
Versiones 16 y posteriores
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
Nueva funcionalidad versión 16
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
AndroidWidget Android Java No pueden ejecutar consultas cuyo código SQL contiene funciones WLanguage.
PHP Este parámetro solo puede tomar el valor hQueryDefault. Si se utiliza otra constante, se genera un error.
Versiones 23 y posteriores
Este parámetro no está disponible si <Nombre de consulta> corresponde a una variable de tipo SQL Query.
Nueva funcionalidad versión 23
Este parámetro no está disponible si <Nombre de consulta> corresponde a una variable de tipo SQL Query.
Este parámetro no está disponible si <Nombre de consulta> corresponde a una variable de tipo SQL Query.
Observaciones

Lectura de datos durante la inicialización

Dependiendo de la consulta (clasificaciones, grupos,...), los datos pueden ser leídos (o no) cuando se inicializa la consulta.
Observación: La propiedad ..ExecutionCompleted permite saber si se ha completado la consulta (y, por lo tanto, si se pueden realizar lecturas sin bloqueos)..
Para acceder a los elementos de la consulta, se debe declarar un Fuente de datos Variable (ver la sección Ejemplo). La consulta se libera automáticamente cuando se destruye el Variable. Para forzar la liberación de los recursos de esta consulta, utilice:

Texto de la consulta SQL

Si un nombre de un archivo de datos o un nombre de ítem contiene caracteres de espacio, estos nombres deben ser encerrados entre corchetes en el texto de la consulta. Por ejemplo:
SELECT [My File1].MyItem, [My File1].[My item1], MyFile2.[My key1]
FROM [My File1], MyFile2
WHERE [My File1].[My key1] = MyFile2.[My key1]

Ejecutar una consulta SQL con parámetros

Una consulta SQL puede contener parámetros. Para ejecutar este tipo de consulta SQL con la función HExecuteSQLQuery, es necesario:
  1. En el texto de la consulta SQL, defina los diferentes parámetros utilizando la notación {Nombre de parámetro}.. Por ejemplo:
    "SELECT * FROM customer WHERE name={p_name}"
  2. Definir a Data source Variable. El nombre de esta variable debe corresponder al parámetro <Nombre de la consulta> de la función HExecuteSQLQuery.
    Ejemplo:
    MyQuery is Data Source
  3. Especifique el valor de los parámetros mediante la siguiente sintaxis:
    <Data source variable >.<Name of Parameter1> = xxx
    <Data source variable >.<Name of Parameter2> = xxx
    <Data source variable >.<Name of Parameter3> = xxx

    Ejemplo:
    MyQuery.p_name = "Doe"
  4. Ejecutar la consulta SQL con la función HExecuteSQLQuery. Ejemplo:
    HExecuteSQLQuery(MyQuery, "SELECT * FROM customer WHERE name={p_name}")
Observación: La estructura de los parámetros de la consulta se reinicia cada vez que se ejecuta la consulta.

inyección SQL: ¿Cómo prevenirlo?

La inyección SQL es una técnica de hacking; consiste en inyectar código SQL en los parámetros de las consultas, forzando la ejecución de código SQL no deseado..
Para evitar la inyección SQL al ejecutar consultas con la función HExecuteSQLQuery, se deben utilizar consultas con parámetros, en lugar de concatenar cadenas para construir la consulta.
Ejemplo:
// Build the query by concatenation
// -> security failure
sdQuery is Data Source
HExecuteSQLQuery(sdQuery, "SELECT * FROM customer WHERE name = '" + EDT_Name + "'")
// Using parameters in the query
// -> secure code
sdQuery is Data Source
sdQuery.p_name = EDT_Name
HExecuteSQLQuery(sdQuery, "SELECT * FROM customer WHERE name={p_name}")
La utilización de parámetros no permite interpretar el contenido como código SQL. Esta técnica evita la inyección de código SQL y elimina varios riesgos de hacking.
Conectores Nativos

Combinaciones

Las uniones como (A unir B en x=y) unir C en y=z ... no son automáticamente soportados por los Accesos Nativos: En este caso, se debe utilizar la constante hQueryWithoutCorrection para gestionar este tipo de combinación.
Observación: Estas uniones son gestionadas por el motor HFSQL.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindows MobileAjaxCódigo de Usuario (UMC)OLE DBConectores Nativos

Uso de la constante hQueryWithoutCorrection?

Por Default, WINDEV y WEBDEV interpretan las consultas SQL:
  • construido a través de un acceso nativo,
  • construido sobre OLEDB y sobre ODBC a través del proveedor OLE DB.
Para no interpretar la consulta, utilice la constante hQueryWithoutCorrection.
Si no se especifica hQueryWithoutCorrection Si se especifica hQueryWithoutCorrection
Definición automática de la conexión asociada a los archivos de datos de la consulta.La conexión que se utilizará debe especificarse en la función HExecuteSQLQuery.
Reemplazo de todos los símbolos propiedad de PC SOFT (ejemplo: ']=' comienza por) por su equivalente en SQL estándar.No se realiza ningún reemplazo. Se deben utilizar los símbolos de SQL estándar.
Formatear las fechas y horas de acuerdo con el formato utilizado por la base de datos..
Por ejemplo, las fechas están en formato 'AAAAMMDD' en WINDEV y WEBDEV mientras que en Access, las fechas están en formato #AAAADDMM# o #AAAAMMDD# dependiendo del idioma del sistema.
No se define ningún formato. Se debe utilizar el formato reconocido por las bases de datos.
Formato de las comas flotantes (el separador decimal puede ser '.' o ',')No se define ningún formato para las comas flotantes.
Dependiendo de la base de datos utilizada, los alias se reemplazan por los nombres completos de los elementos en las cláusulas Where, Order by y Group by
Por ejemplo, el motor JET (Access, dBase, etc.) no acepta nombres de alias en la cláusula Where de una consulta
No se realiza ningún reemplazo. Se deben utilizar los nombres completos de los elementos directamente en el código de la consulta, en las cláusulas Where, Order by y Group by.
Conectores Nativos Caso especial: Oracle y SQL Server: Si la consulta que se ejecutará contiene un script con ":param" (Oracle) o "@param" (SQL Server), debe utilizarse la combinación de constantes hQueryWithoutCorrection + hNoBind para no interpretar la consulta.

Condición de una clave compuesta en una consulta SQL

Para definir una condición en una clave compuesta en una consulta SQL, se deben especificar las condiciones para cada componente de la clave .
No intente asignar directamente un valor a la clave compuesta (de hecho, las claves compuestas se almacenan como valores binarios).
Ejemplo: La clave compuesta se compone de los elementos LASTNAME y FIRSTNAME (Last Name First Name):
SELECT MyFile.MyItem, MyFile.MyItem1
FROM MyFile
WHERE FileName.LastName = "Smith" AND FileName.FirstName = "Fred"
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadUniversal Windows 10 AppWindows MobilePHPAjaxCódigo de Usuario (UMC)Lenguaje ExternoHFSQLHFSQL Client/ServerHyper File 5.5

Consultas sobre archivos de datos HFSQL

  • Para optimizar el tiempo de ejecución de la consulta, utilice HOptimize en los diferentes archivos de datos que participan en la consulta, o HOptimizeQuery.
  • Para optimizar el tiempo de consulta de Process, utilice HStatCalculate o HIndex en todos los archivos de datos que participan en la consulta.
  • Al ejecutar una consulta INSERT en archivos de datos HFSQL, se puede conocer el identificador automático asignado al nuevo registro mediante la siguiente sintaxis: <Nombre archivo>.<Nombre elemento identificador automático>.
  • Si los archivos de datos utilizados por la consulta no se encuentran en el análisis, estos archivos deben ser declarados dinámicamente por HDeclareExternal. De lo contrario, un error como No se puede inicializar la consulta. Desconocido FILENAME ocurrirá. Ejemplo:
    // Connection parameters
    cntDatabase is Connection
    cntDatabase..Provider = hAccessHFClientServer
    cntDatabase..Server = "HYPERFILESQLSERVER:4900"
    cntDatabase..Database = "Database"
    cntDatabase..User = "admin"
    cntDatabase..Password = ""

    // Connection to the database
    IF HOpenConnection(cntDatabase) = False THEN
    Error(HErrorInfo())
    RETURN
    END

    // Dynamic declaration of the files used in the query
    IF HDeclareExternal("CUSTOMER.FIC", "CUSTOMER", cntDatabase) = False THEN
    Error(HErrorInfo())
    RETURN
    END

    // Run the query
    dsSQLQuery is Data Source
    IF NOT HExecuteSQLQuery(dsSQLQuery, cntDatabase, hQueryDefault,[
    SELECT *
    FROM CUSTOMER
    ]) THEN
    Error("Runtime problem")
    ELSE
    Info("ok")
    END

    // Cancels the dynamic file declaration
    HCancelDeclaration("CUSTOMER")

    // Closes the connection to the database
    HCloseConnection(cntDatabase)
  • Versiones 18 y posteriores
    Cuando se ejecuta una consulta INSERTAR/ACTUALIZAR/ELIMINAR en los archivos de datos HFSQL, el número de registros añadidos, modificados o eliminados es devuelto por el H.NbRecModificationQuery Variable.
    Nueva funcionalidad versión 18
    Cuando se ejecuta una consulta INSERTAR/ACTUALIZAR/ELIMINAR en los archivos de datos HFSQL, el número de registros añadidos, modificados o eliminados es devuelto por el H.NbRecModificationQuery Variable.
    Cuando se ejecuta una consulta INSERTAR/ACTUALIZAR/ELIMINAR en los archivos de datos HFSQL, el número de registros añadidos, modificados o eliminados es devuelto por el H.NbRecModificationQuery Variable.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindows MobilePHPAjaxCódigo de Usuario (UMC)Conectores Nativos

Optimización para ejecutar la misma consulta varias veces (sólo accesos nativos de Oracle y SQL Server)

Para optimizar la ejecución de una consulta varias veces, puede hacerlo:
  1. Declarar una fuente de datos. Esta fuente de datos contendrá el resultado de la consulta SQL.
  2. Declarar los diferentes parámetros o variables de la consulta.
    Los parámetros son parámetros de cadena de Default. Puede especificar su tipo usando ..Type.
    Atención: Para especificar el tipo de una consulta Variable, también se puede asignar a este Variable un Variable existente de tipo solicitado.
  3. Prepara la consulta con HPrepareSQLQuery.
  4. Indique el valor del o de los diferentes parámetros que se deben tener en cuenta y ejecute la consulta con la función HExecuteSQLQuery. Sólo se debe especificar el nombre de la fuente de datos que corresponde a la consulta.
Este último paso debe repetirse tantas veces como sea necesario.
Ejemplo:
// Run the same query in Oracle
// Declare a data source
// This data source corresponds to the query.
Insert1 is Data Source
// Declare one of the query parameters
// This parameter is an integer
Insert1.age = 0
i is int
// Prepare the query for multiple executions
HPrepareSQLQuery(Insert1, MyConnection, ...
hQueryWithoutCorrection, ...
"INSERT INTO PERSONE VALUES (:lastname,:firstname,:age )")
// Loop for running the query
// Only some parameters are modified
FOR i = 1 TO 10
Insert1.lastname = "LastName" + i
Insert1.firstname = "FirstName" + i
Insert1.age = i
HExecuteSQLQuery(Insert1)
END
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindows MobilePHPCódigo de Usuario (UMC)Conectores Nativos

Especificación y recuperación de valores al ejecutar una consulta (procedimientos almacenados)

Observación: Esta nota sólo se aplica a los accesos nativos de Oracle y SQL Server.
Para especificar y recuperar valores al ejecutar una consulta, debe hacerlo:
  1. Declarar una fuente de datos. Esta fuente de datos contendrá el resultado de la consulta SQL.
  2. Declarar las diferentes variables de consulta (variables de entrada y salida).
    Las variables son variables de cadena de Default. Puede especificar su tipo usando ..Type.
    Atención: Para especificar el tipo de una consulta Variable, también se puede asignar a este Variable un Variable existente de tipo solicitado.
  3. Ejecutar la consulta con la función HExecuteSQLQuery.
// Example for Oracle
// Declare the data source associated with the query
MyProc is Data Source
// Declare the variables
MyProc.n = 3
MyProc.str = "Example"
// Run the query and retrieve the result
HExecuteSQLQuery(MyProc, MyConnection, hQueryWithoutCorrection, ...
"begin:Res:=sp_cut(:n,:str);end;")
// Display the result
Info(MyProc.Res)
Observaciones
  • La función HExecuteSQLQuery debe utilizarse con:
    • el nombre de la conexión,
    • la constante hQueryWithoutCorrection.
  • Las variables declaradas en la consulta deben ser idénticas a las utilizadas en el código de Procedure almacenado. De lo contrario, se produce un error WLanguage.
  • En la llamada a la Procedure almacenada, se debe utilizar la sintaxis específica de la base de datos utilizada, incluso para los parámetros.
    Por lo tanto, para Oracle, los parámetros se especifican con la sintaxis :ParamName.. Atención: El carácter ":" debe ir seguido de al menos una letra (la sintaxis:1 no está permitida).
    Para SQL Server, los parámetros se especifican mediante la siguiente notación: @ParamName..
    El mismo parámetro se puede utilizar varias veces. En este caso, el correspondiente Variable será reutilizado.
  • Para ejecutar una consulta sin habilitar el enlace, use la constante hNoBind en HExecuteSQLQuery.
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadUniversal Windows 10 AppWindows MobilePHPAjaxCódigo de Usuario (UMC)HFSQLHFSQL Client/ServerHyper File 5.5OLE DBConectores Nativos

Consultas SQL (función HExecuteSQLQuery o ejecución de consultas SQL creadas en el editor de consultas)

Cuando se utilizan las sentencias SQL DELETE, INSERT o UPDATE en consultas SQL, Default no realiza ninguna comprobación de integridad ni de duplicación en una base de datos HFSQL.
Para realizar un control automático de la integridad, se debe especificar la constante hCheckIntegrity. Esta constante permite activar la gestión de la integridad al ejecutar la consulta. Si se detecta un error de integridad, no se ejecuta la consulta. Se inicia una transacción, los registros se bloquean en escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta. Si la aplicación se detiene durante la ejecución de la consulta (corte de energía, por ejemplo), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
HFSQL Client/Server Si no se especifica la constante hCheckIntegrity, se desactiva la gestión de la integridad. Sin embargo, se produce un error si se debe realizar una operación de gestión de la integridad, pero el usuario no tiene los derechos para desactivar la gestión de la integridad (HModifyDatabaseRights).
Para realizar una comprobación automática de los duplicados, basta con especificar la constante hCheckDuplicates. Esta constante permite activar la gestión de duplicados al ejecutar la consulta. Si se detecta un error de duplicados, no se ejecuta la consulta. Se inicia una transacción, los registros se bloquean en escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado de la consulta. Si la aplicación se detiene durante la ejecución de la consulta (corte de energía, por ejemplo), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
Observación: Si se produce un error de duplicados al ejecutar una consulta UPDATE, la función HExecuteQuery devuelve False y el proceso continúa. El error correspondiente puede conocerse con la función HErrorInfo.
Observación: La asistencia automática predeterminada no se llama para los errores de duplicados. Se genera un error simple de duplicados. Si se definió una asistencia con la función HOnError, se llama a esta asistencia personalizada.
HFSQL Client/Server Si no se especifica la constante hCheckDuplicates, se desactiva la gestión de duplicados. Si el usuario no tiene permisos para desactivar la gestión de duplicados (función HModifyDatabaseRights) y se debe realizar la gestión de duplicados, se muestra un error de permisos.
Las consultas ACTUALIZAR, BORRAR e INSERTAR sólo existen durante su ejecución. No se puede utilizar una función WLanguage en este tipo de consulta después de que ha sido ejecutada.
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadUniversal Windows 10 AppWindows MobilePHPAjaxCódigo de Usuario (UMC)Lenguaje ExternoHFSQLOLE DBConectores Nativos

Consultas de navegación (HReadFirst)

  • Por Default, HReadFirst vuelve a realizar la consulta a actualización el resultado. Se recomienda utilizar la constante hNoRefresh para evitar que se repita la consulta.
  • Browsing a query run with the hQueryWithoutCorrection option:
    Para examinar los registros en el orden en que fueron devueltos por la base de datos, no es necesario especificar un elemento de búsqueda. Ejemplo:
    HReadFirst("MyQuery", hNoRefresh)

    Si se especifica un elemento de navegación, el resultado de la consulta se recupera e indexa por completo.. La búsqueda se realiza en el elemento especificado. Se ignora el orden inicial de la consulta (especificado por ORDER BY).. El índice creado (en formato HFSQL) es sensible al caso, a la puntuación, a los caracteres acentuados y en orden ascendente..
    Ejemplo:
    HReadFirst("MyQuery", "MyItem", hNoRefresh)

    El índice creado se utiliza para realizar búsquedas en el resultado de la consulta.
Componente : wd250hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Example
PROCEDURE UI_CargaTablegrid(Codigo)
SqlScript is SQL Query =
[
SELECT F028_FATOR_CONVERSAO.F003_PROD_ID,
F028_FATOR_CONVERSAO.F028_QTDE_ORIGEM,
F028_FATOR_CONVERSAO.F028_UNIDADE_ORIGEM
FROM F028_FATOR_CONVERSAO
WHERE
F028_FATOR_CONVERSAO.F003_PROD_ID = {ParamF003_PROD_ID}
]
SqlScript.ParamF003_PROD_ID = Codigo
IF HExecuteSQLQuery(SqlScript) = True THEN
FOR EACH SqlScript
TableAdd(TABLEGRID_F028_FATOR_CONVERSAO,SqlScript.F028_FATOR_CONVERSAO_ID +TAB+
SqlScript.F003_PROD_ID +TAB+
SqlScript.F028_QTDE_ORIGEM)
END
END
TableDisplay(TABLEGRID_F028_FATOR_CONVERSAO,taInit)
BOLLER
27 12 2019
Uso de SysDate and Dblink
To use sysdate and dblink with another database it is important to inform in the parameters: hQueryWithoutCorrection

Para usar o sysdate e fazer um dblink com outro banco de dados é importante informar nos paramentros: hQueryWithoutCorrection

Pour utiliser sysdate et dblink avec une autre base de données, il est important de renseigner les paramètres: hQueryWithoutCorrection
BOLLER
27 09 2019
Example
https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/3133-winformatica-example-hexecutesqlquery-with-break-and-filter-custom/read.awp
BOLLER
29 03 2019
Exemplo HexecuteSqlQuery com WHILE HOut () = False
numero_corrida é int = 0

MyProcedureUltimaCorrida é fonte de dados

IF HExecuteSQLQuery (MyProcedureUltimaCorrida, ConnNativa, hQueryWithoutCorrection, "NG0002_Procedure_UltimaCorrida") THEN

HReadFirst (MyProcedureUltimaCorrida, num_corrida)

ENQUANTO Hout () = False

ok = HReadNext (MyProcedureUltimaCorrida, num_corrida)

numero_corrida = MyProcedureUltimaCorrida.num_corrida

END

ELSE

Erro (HErrorInfo ())

END

info(numero_corrida)
BOLLER
29 03 2019
Run Procedure MySQL
n_value_demo_number is int = 1
s_value_demo_string is string = "abc"
ds_result is Data Source
b_result is boolean
s_sql is string = "CALL pr_test ("+n_value_demo_number+","+"'"+s_value_demo_string+"')"
b_resultado = HExecuteSQLQuery(ds_result,CONNECTION_NAME_HERE,hQueryDefault+hQueryWithoutCorrection,s_sql)
IF b_resultado = False THEN
error("Error Running Procedure ",herrorinfo())
END
Willian Fernando
31 10 2016