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
  • ¿Por qué debe utilizarse 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 (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 consulta SQL.
    Nueva funcionalidad versión 23
    una variable de consulta SQL.
    una variable de consulta SQL.
Entonces, el resultado de la consulta puede ser navegado. Si ya existe una consulta con el mismo nombre, se sustituye esta consulta. El resultado se vuelve a calcular.
Característica específica de HFSQL : Las consultas SQL se ejecutan en una base de datos HFSQL Classic, Mobile o Client/Server pueden contener funciones WLanguage. Ver Uso de una función WLanguage en una consulta SQL para más detalles.
Atención: Para posicionarse en el primer registro del resultado de la consulta, use HReadFirst por ejemplo.
Para liberar los recursos de una consulta tecleada en ,HExecuteSQLQuery use:
Nota: una consulta no se inicializará si:
  • el nombre de la consulta ya se utiliza en el análisis actual (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 puede ejecutar consultas cuyo código SQL contenga 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.
señalar: 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 puede ejecutar consultas cuyo código SQL contenga 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.
señalar: 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 puede ejecutar consultas cuyo código SQL contenga 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.
señalar: 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
CustomerQry 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

Running an SQL query (without connection) Ocultar los detalles

<Result> = HExecuteSQLQuery(<Query name> [, <Mode>] , <Texto de la consulta SQL>)
<Result>: Boolean
  • True si la consulta SQL fue inicializada,
  • en casoFalse contrario. HErrorInfo devuelve más detalles sobre el problema.
<Query name>: 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 <Texto de la consulta SQL> por programación. Si ya se ha declarado una consulta con el mismo nombre, se sustituye por la nueva consulta.
  • Versiones 23 y posteriores
    Nombre de la 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 la 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 la 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 inicializar 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 filtro si el motor HFSQL lo permite. De lo contrario, el resultado de la consulta corresponde a una vista HFSQL.
  • no se permiten las siguientes operaciones: buscar en el resultado de la consulta, consulta sobre consulta, ver sobre consulta, consulta sobre consulta.
  • se ignoran los elementos de búsqueda especificados al navegar por el resultado.
  • la lupa no está disponible para las tablas relacionado de una consulta.
  • HNbRec no se puede utilizar en las consultas.
    Atención: si se especifica esta opción, se utiliza automáticamente la constante hModifyFile.
Si no se especifica este parámetro (por defecto):
  • 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 sobre consulta, ver sobre consulta, consulta sobre consulta.
  • se tienen en cuenta los elementos de búsqueda especificados al navegar por el resultado.
  • la lupa está disponible para las tablas relacionado a una consulta.
  • HNbRec se puede utilizar en las consultas.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
hWithTransactionLa consulta se ejecuta en una operación.
Se inicia una transacción, los registros se bloquean en lectura/escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).
Si la consulta no puede finalizar correctamente (registros bloqueados, corte de energía,...), la transacción se cancela y los archivos de datos se restauran a su estado anterior (antes de la ejecución de la consulta).
señalar: la ejecución de la consulta puede ralentizarse.
AndroidWidget Android iPhone/iPadWindows MobileJavaPHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las 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 : Al modificar el resultado de la consulta (HAddHWrite, HModify, , , HCross,HDelete), estas modificaciones se aplicarán a los ficheros de datos que intervienen en la consulta..
    Si no se especifica esta opción, sólo se modifica el resultado de la consulta..
    Ver Modificar el contenido de la consulta para más detalles.
  • En archivos de datos en un formato distinto a HFSQL, la constante hModifyFile es inútil.: los ficheros de datos que intervienen 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 sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
hQueryBreakableLa inicialización 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 se ignora.
Java Acceso por JDBC: Esta constante no está disponible.
HFSQL Client/Server La tecla Esc debe estar pulsada en el ordenador cliente.
hQueryDefault
(valor por defecto)
La consulta se inicializa sin interrupción.
hQueryWithoutCorrection
OLE DBConectores Nativos El motor HFSQL no realiza ninguna comprobación. Esta opción debe utilizarse si la consulta contiene comandos específicos de un tipo de conexión (Oracle, SQL Server, ....)
Atención: si se utiliza esta constante:
  • debe especificarse el nombre de la conexión (parámetro <Connection>).
  • 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 formato de archivo (con o sin espacios en blanco) no es verificado por el motor HFSQL.. Se utilizará si la consulta maneja tanto archivos de datos HFSQL en un formato que completa elementos con caracteres espaciales como archivos de datos HFSQL en un formato que no completa elementos con caracteres espaciales.
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
Al leer el resultado de la consulta, esta operación de lectura puede bloquearse y por defecto aparece un reloj de arena.. Esta constante se utiliza para no mostrar el reloj de arena en este caso.
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.
hYieldPara las consultas UPDATE y DELETE realizadas sobre un número importante de registros y siendo bastante larga, esta constante se utiliza para devolver el control a las demás aplicaciones que utilizan los ficheros de datos..
En este caso:
  • la consulta es un poco más lenta,
  • el servidor de archivos no está saturado,
  • los demás usuarios de archivos de datos pueden acceder a ellos sin estar bloqueados.
HFSQL Client/ServerOLE DBConectores Nativos Esta constante se ignora.

AndroidWidget Android PHP Esta constante no está disponible.

Java Acceso por JDBC: Esta constante no está disponible.
hCheckDuplicatesPermite la gestión de duplicados durante la ejecución de la consulta.. La consulta no se ejecuta si se produce un error duplicado.
Esta constante fuerza la constante hWithTransaction.. Se inicia una transacción, los registros se bloquean en lectura/escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).. Si la aplicación se detiene durante la ejecución de la consulta (por ejemplo, corte de energía), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta..
señalar: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server La gestión de los duplicados se desactiva si no se especifica la constante hCheckDuplicates.. Se produce un error si el usuario no tiene derechos para desactivar la gestión de duplicados (HModifyDatabaseRights) y si se debe realizar la gestión de duplicados.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
hCheckIntegrityPermite la gestión de la integridad durante la ejecución de la consulta.. La consulta no se ejecuta si se produce un error de integridad.
Esta constante fuerza la constante hWithTransaction. Se inicia una transacción, los registros se bloquean en lectura/escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).. Si la aplicación se detiene durante la ejecución de la consulta (por ejemplo, corte de energía), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta..
señalar: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server La gestión de la integridad se desactiva si no se especifica la constante hCheckIntegrity.. Se produce un error si el usuario no tiene derechos para desactivar la gestión de la integridad (HModifyDatabaseRights) y si se debe realizar la gestión de la integridad.
AndroidWidget Android Windows MobilePHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
Versiones 16 y posteriores
Java Acceso por JDBC: Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
AndroidWidget Android Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
Nueva funcionalidad versión 16
Java Acceso por JDBC: Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
AndroidWidget Android Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
Java Acceso por JDBC: Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
AndroidWidget Android Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
<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 puede ejecutar consultas cuyo código SQL contenga funciones WLanguage.
Nueva funcionalidad versión 16
AndroidWidget Android Java No puede ejecutar consultas cuyo código SQL contenga funciones WLanguage.
AndroidWidget Android Java No puede ejecutar consultas cuyo código SQL contenga funciones WLanguage.
PHP Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
Versiones 23 y posteriores
Este parámetro no está disponible si <Query name> corresponde a una variable de consulta SQL.
Nueva funcionalidad versión 23
Este parámetro no está disponible si <Query name> corresponde a una variable de consulta SQL.
Este parámetro no está disponible si <Query name> corresponde a una variable de consulta SQL.

Running an SQL query via a connection Ocultar los detalles

<Result> = HExecuteSQLQuery(<Query name> [, <Connection> [, <Mode>]] , <Texto de la consulta SQL>)
<Result>: Boolean
  • True si la consulta SQL fue inicializada,
  • en casoFalse contrario. HErrorInfo devuelve más detalles sobre el problema.
<Query name>: 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 <Texto de la consulta SQL> por programación. Si ya se ha declarado una consulta con el mismo nombre, se sustituye por la nueva consulta.
  • Versiones 23 y posteriores
    Nombre de la 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 la 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 la 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
Nombre de la conexión utilizada para ejecutar la consulta. Esta conexión se definió en el editor de modelos de datos, programando con HDescribeConnection o HOpenConnection, o especificando las propiedades de la variable de conexión. <Resultado> se ajusta a si este False parámetro no corresponde a una conexión existente.
<Mode>: Optional Integer constant
Opción para inicializar 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 filtro si el motor HFSQL lo permite. De lo contrario, el resultado de la consulta corresponde a una vista HFSQL.
  • no se permiten las siguientes operaciones: buscar en el resultado de la consulta, consulta sobre consulta, ver sobre consulta, consulta sobre consulta.
  • se ignoran los elementos de búsqueda especificados al navegar por el resultado.
  • la lupa no está disponible para las tablas relacionado de una consulta.
  • HNbRec no se puede utilizar en las consultas.
    Atención: si se especifica esta opción, se utiliza automáticamente la constante hModifyFile.
Si no se especifica este parámetro (por defecto):
  • 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 sobre consulta, ver sobre consulta, consulta sobre consulta.
  • se tienen en cuenta los elementos de búsqueda especificados al navegar por el resultado.
  • la lupa está disponible para las tablas relacionado a una consulta.
  • HNbRec se puede utilizar en las consultas.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
hWithTransactionLa consulta se ejecuta en una operación.
Se inicia una transacción, los registros se bloquean en lectura/escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).
Si la consulta no puede finalizar correctamente (registros bloqueados, corte de energía,...), la transacción se cancela y los archivos de datos se restauran a su estado anterior (antes de la ejecución de la consulta).
señalar: la ejecución de la consulta puede ralentizarse.
AndroidWidget Android iPhone/iPadWindows MobileJavaPHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las 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 : Al modificar el resultado de la consulta (HAddHWrite, HModify, , , HCross,HDelete), estas modificaciones se aplicarán a los ficheros de datos que intervienen en la consulta..
    Si no se especifica esta opción, sólo se modifica el resultado de la consulta..
    Ver Modificar el contenido de la consulta para más detalles.
  • En archivos de datos en un formato distinto a HFSQL, la constante hModifyFile es inútil.: los ficheros de datos que intervienen 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 sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
PHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
hQueryBreakableLa inicialización 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 se ignora.
Java Acceso por JDBC: Esta constante no está disponible.
HFSQL Client/Server La tecla Esc debe estar pulsada en el ordenador cliente.
hQueryDefault
(valor por defecto)
La consulta se inicializa sin interrupción.
hQueryWithoutCorrection
OLE DBConectores Nativos El motor HFSQL no realiza ninguna comprobación. Esta opción debe utilizarse si la consulta contiene comandos específicos de un tipo de conexión (Oracle, SQL Server, ....)
Atención: si se utiliza esta constante:
  • debe especificarse el nombre de la conexión (parámetro <Connection>).
  • 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 formato de archivo (con o sin espacios en blanco) no es verificado por el motor HFSQL.. Se utilizará si la consulta maneja tanto archivos de datos HFSQL en un formato que completa elementos con caracteres espaciales como archivos de datos HFSQL en un formato que no completa elementos con caracteres espaciales.
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
Al leer el resultado de la consulta, esta operación de lectura puede bloquearse y por defecto aparece un reloj de arena.. Esta constante se utiliza para no mostrar el reloj de arena en este caso.
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.
hYieldPara las consultas UPDATE y DELETE realizadas sobre un número importante de registros y siendo bastante larga, esta constante se utiliza para devolver el control a las demás aplicaciones que utilizan los ficheros de datos..
En este caso:
  • la consulta es un poco más lenta,
  • el servidor de archivos no está saturado,
  • los demás usuarios de archivos de datos pueden acceder a ellos sin estar bloqueados.
HFSQL Client/ServerOLE DBConectores Nativos Esta constante se ignora.

AndroidWidget Android PHP Esta constante no está disponible.

Java Acceso por JDBC: Esta constante no está disponible.
hCheckDuplicatesPermite la gestión de duplicados durante la ejecución de la consulta.. La consulta no se ejecuta si se produce un error duplicado.
Esta constante fuerza la constante hWithTransaction.. Se inicia una transacción, los registros se bloquean en lectura/escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).. Si la aplicación se detiene durante la ejecución de la consulta (por ejemplo, corte de energía), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta..
señalar: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server La gestión de los duplicados se desactiva si no se especifica la constante hCheckDuplicates.. Se produce un error si el usuario no tiene derechos para desactivar la gestión de duplicados (HModifyDatabaseRights) y si se debe realizar la gestión de duplicados.
AndroidWidget Android PHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
hCheckIntegrityPermite la gestión de la integridad durante la ejecución de la consulta.. La consulta no se ejecuta si se produce un error de integridad.
Esta constante fuerza la constante hWithTransaction. Se inicia una transacción, los registros se bloquean en lectura/escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).. Si la aplicación se detiene durante la ejecución de la consulta (por ejemplo, corte de energía), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta..
señalar: la ejecución de la consulta puede ralentizarse.
HFSQL Client/Server La gestión de la integridad se desactiva si no se especifica la constante hCheckIntegrity.. Se produce un error si el usuario no tiene derechos para desactivar la gestión de la integridad (HModifyDatabaseRights) y si se debe realizar la gestión de la integridad.
AndroidWidget Android Windows MobilePHP Esta constante no está disponible.
AndroidWidget Android Esta constante sólo está disponible para las bases de datos HFSQL. Esta constante no está disponible para las bases de datos SQLite.
Windows MobilePHP Esta constante no está disponible.
Java Acceso por JDBC: Esta constante no está disponible.
Versiones 16 y posteriores
Java Acceso por JDBC: Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
AndroidWidget Android Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
Nueva funcionalidad versión 16
Java Acceso por JDBC: Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
AndroidWidget Android Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
Java Acceso por JDBC: Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
AndroidWidget Android Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
<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 puede ejecutar consultas cuyo código SQL contenga funciones WLanguage.
Nueva funcionalidad versión 16
AndroidWidget Android Java No puede ejecutar consultas cuyo código SQL contenga funciones WLanguage.
AndroidWidget Android Java No puede ejecutar consultas cuyo código SQL contenga funciones WLanguage.
PHP Este parámetro sólo puede ajustarse a hQueryDefault.. Se genera un error si se utiliza otra constante.
Versiones 23 y posteriores
Este parámetro no está disponible si <Query name> corresponde a una variable de consulta SQL.
Nueva funcionalidad versión 23
Este parámetro no está disponible si <Query name> corresponde a una variable de consulta SQL.
Este parámetro no está disponible si <Query name> corresponde a una variable de consulta SQL.
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.
señalar: ..EjecuciónCompletada se utiliza para averiguar si la consulta está completa (y por lo tanto si las operaciones de lectura se pueden realizar sin bloqueo)..
Para acceder a las posiciones de consulta, se debe declarar una Fuente de datos variable (véase Ejemplo).. La consulta se libera automáticamente cuando se destruye la variable. Para forzar la liberación de los recursos de esta consulta, utilice:

Texto de la consulta SQL

Si el nombre de un artículo archivo de datos o el nombre de un artículo contiene caracteres de espacio, estos nombres deben incluirse 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 ,HExecuteSQLQuery debe:
  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 una variable Fuente de datos.. 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}")
Nota: La estructura de los parámetros de consulta se reinicia cada vez que se ejecuta la consulta con parámetros.

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 a través de ,HExecuteSQLQuery debe utilizar consultas con parámetros y no debe concatenar cadenas para crear 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, la constante hQueryWithoutCorrection debe utilizarse para gestionar este tipo de unión.
Nota: Estas uniones son gestionadas por el motor HFSQL.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindows MobileAjaxCódigo de Usuario (UMC)OLE DBConectores Nativos

¿Por qué debe utilizarse la constante hQueryWithoutCorrection?

Por defecto, 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.
hQueryWithoutCorrection no se especificahQueryWithoutCorrection se especifica
Definición automática de la conexión asociada a los ficheros de datos encontrados en la consulta.La conexión que se utilizará debe especificarse en la función HExecuteSQLQuery.
Reemplazar todos los símbolos de propiedad de PC SOFT (ejemplo: ']=' comienza por) por su equivalente en SQL estándar.No se realiza ningún reemplazo. Deben utilizarse los símbolos 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 realiza ningún formateo. Debe utilizarse el formato reconocido por la base de datos.
Formato de las comas flotantes (el separador decimal puede ser '.' o ',')No se realiza ningún formateo para los flotadores.
Dependiendo de la base de datos utilizada, los alias se sustituyen por los nombres completos de los elementos en Dónde, Orden por y Grupo por
Por ejemplo, el motor JET (Access, dBase,...) no acepta ningún nombre de alias en la cláusula Where de una consulta.
No se realiza ningún reemplazo. Los nombres completos de los artículos deben utilizarse en el código de consulta de Dónde, Ordenar por y Agrupar por.
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/iPadWindows MobileUniversal Windows 10 AppPHPAjaxCó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 ficheros de datos que intervienen en la consulta oHOptimizeQuery...
  • Para optimizar el tiempo de proceso de las consultas, 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
    Al ejecutar una consulta INSERT/UPDATE/DELETE en archivos de datos HFSQL, es posible conocer el número de registros que se agregaron, modificaron o eliminaron con la variable H.NbRecModificationQuery.
    Nueva funcionalidad versión 18
    Al ejecutar una consulta INSERT/UPDATE/DELETE en archivos de datos HFSQL, es posible conocer el número de registros que se agregaron, modificaron o eliminaron con la variable H.NbRecModificationQuery.
    Al ejecutar una consulta INSERT/UPDATE/DELETE en archivos de datos HFSQL, es posible conocer el número de registros que se agregaron, modificaron o eliminaron con la variable H.NbRecModificationQuery.
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 por defecto. Tiene la posibilidad de especificar su tipo utilizando ..Type.
    Atención: Para especificar el tipo de una variable de consulta, también se puede asignar una variable existente de tipo solicitado a esta variable.
  3. Preparar 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 debe especificarse el nombre de la fuente de datos correspondiente 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)

Nota: 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 por defecto. Tiene la posibilidad de especificar su tipo utilizando ..Type.
    Atención: Para especificar el tipo de una variable de consulta, también se puede asignar una variable existente de tipo solicitado a esta variable.
  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)
Notas
  • Se debe usar con HExecuteSQLQuery:
    • 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 procedimiento almacenado.. De lo contrario, se produce un error de WLanguage.
  • En la llamada al procedimiento almacenado, 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, la variable correspondiente será reutilizada.
  • Para ejecutar una consulta sin activar el bind, utilice la constante hNoBind en la función HExecuteSQLQuery.
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadWindows MobileUniversal Windows 10 AppPHPAjaxCódigo de Usuario (UMC)HFSQLHFSQL Client/ServerHyper File 5.5OLE DBConectores Nativos

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

Al utilizar las instrucciones SQL DELETE, INSERT o UPDATE en las consultas SQL, por defecto, no se realiza ningún control de integridad ni de duplicados en una base de datos HFSQL.
Para realizar un control automático de la integridad, solo debe especificar la constante hCheckIntegrity. Esta constante se utiliza para permitir la gestión de la integridad durante la ejecución de la consulta.. La consulta no se ejecuta si se produce un error de integridad. De hecho, se inicia una transacción, los registros se bloquean en modo escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).. Si la aplicación se detiene durante la ejecución de la consulta (por ejemplo, corte de energía), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
HFSQL Client/Server La gestión de la integridad se desactiva si no se especifica la constante hCheckIntegrity.. Se produce un error si el usuario no tiene derechos para desactivar la gestión de la integridad (HModifyDatabaseRights) y si se debe realizar la gestión de la integridad.
Para realizar un control automático de los duplicados, solo debe especificar la constante hCheckDuplicates. Esta constante se utiliza para permitir la gestión de duplicados durante la ejecución de la consulta.. La consulta no se ejecuta si se produce un error duplicado. De hecho, se inicia una transacción, los registros se bloquean en modo escritura durante la ejecución de la consulta y se desbloquean al final de su ejecución, independientemente del resultado (fracaso o éxito).. Si la aplicación se detiene durante la ejecución de la consulta (por ejemplo, corte de energía), la transacción se cancelará la próxima vez que se utilicen los archivos de datos de la consulta.
señalar: Si se produce un error de duplicados al ejecutar una consulta UPDATE, HExecuteQuery retorna y el False proceso continúa. El error correspondiente es devuelto por HErrorInfo.
Nota: La asistencia automática predeterminada no se llama para los errores duplicados.. Se genera un simple error de duplicado. Si una asistencia fue redefinida por HOnError, entonces esta asistencia personalizada es llamada.
HFSQL Client/Server La gestión de los duplicados se desactiva si no se especifica la constante hCheckDuplicates.. Se produce un error si el usuario no tiene derechos para desactivar la gestión de duplicados (HModifyDatabaseRights) y si se debe realizar la gestión de duplicados.
Las consultas UPDATE, DELETE e INSERT solo existen durante su ejecución. No se puede utilizar ninguna función WLanguage en este tipo de consulta después de su ejecución.
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadWindows MobileUniversal Windows 10 AppPHPAjaxCódigo de Usuario (UMC)Lenguaje ExternoHFSQLOLE DBConectores Nativos

Consultas de navegación (HReadFirst)

  • De forma predeterminada, HReadFirst vuelve a ejecutar la consulta para actualización obtener el resultado de la consulta.. Recomendamos que utilice la constante hNoRefresh para evitar volver a ejecutar la consulta..
  • Navegar una ejecución de consulta con la opción hQueryWithoutCorrection :
    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 : wd240hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
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