AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos / HFSQL / Funciones HFSQL
  • ¿Cuándo utilizar la función HPrepareSQLQuery?
  • ¿Cómo utilizar HPrepareSQLQuery?
  • Condición de una clave compuesta en una consulta SQL
  • Limitaciones
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
HPrepareSQLQuery (Función)
Conectores NativosDisponible solo con este tipo de conexión
Inicializa una consulta escrita en SQL y la declara al servidor de la base de datos para optimizar las siguientes ejecuciones de dicha consulta. Esta consulta no se ejecuta. A continuación, se puede ejecutar la consulta con HExecuteSQLQuery. Esta función está disponible para consultas con o sin bind.
Para liberar los recursos de esta consulta, utilice HCancelDeclaration.
Se recomienda utilizar esta función cuando la misma consulta se ejecuta sucesivamente y cuando sólo se modifican algunos de los parámetros de la consulta en cada ejecución..
Esta función es opcional y sólo se puede utilizar en las bases de datos Cliente/Servidor (disponible para Oracle, Oracle Lite, Sybase y SQL Server).. En el Servidor SQL, puede ser necesaria la Conector Nativo a través de OLE DB o ODBC.
Para las demás bases de datos a las que se accede mediante un Conector Nativo, OLEDB u ODBC, HPrepareSQLQuery ejecuta la consulta.
Esta función no puede utilizarse en las bases de datos HFSQL (HFSQL Classic o Cliente/Servidor) ni en las bases de datos xBase.
Ejemplo
// Run the same query in Oracle
// Declare a data source
// This data source corresponds to the query
Insert1 is Data Source
i is int
// Declare one of the query parameters
// This parameter is an integer
Insert1.age = 0
// Prepare the query for multiple executions
HPrepareSQLQuery(Insert1, DatabaseConnection, ...
hQueryWithoutCorrection, "INSERT INTO PERSON 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
Sintaxis
<Result> = HPrepareSQLQuery(<Data source> , <Connection> , <Mode> , <SQL query text>)
<Result>: booleano
  • True si no se ha encontrado ningún problema,
  • False en caso contrario. La función HErrorInfo permite obtener más detalles sobre el problema.
<Data source>: Fuente de datos
Nombre de la fuente de datos Variable que corresponde a la solicitud de inicialización.
<Connection>: Cadena de caracteres o variable de tipo Connection
Nombre de la conexión utilizada para ejecutar la consulta. Esta conexión corresponde a: Si este parámetro no corresponde a una conexión existente, <Resultado> se establece en False.
<Mode>: Constante de tipo Integer
hQueryWithoutCorrectionSólo Conector Nativo: El motor HFSQL no realiza ninguna comprobación sobre el texto de la consulta.
<SQL query text>: Cadena de caracteres
Texto de la consulta SQL a ejecutar.
Observaciones

¿Cuándo utilizar la función HPrepareSQLQuery?

En algunos casos, puede ser interesante ejecutar la misma consulta varias veces mientras se modifican una o más variables.. Por ejemplo, es posible que desee ejecutar una consulta Insertar varias veces para agregar varios registros a un archivo.
Se pueden implementar varias soluciones:
  1. Ejecute la consulta directamente (con HExecuteSQLQuery) tantas veces como sea necesario, y modifique las Variable(s) deseadas cada vez.
  2. Prepare la consulta a ejecutar (HPrepareSQLQuery) así como las diferentes variables a modificar. A continuación, ejecute la consulta tantas veces como sea necesario con HExecuteSQLQuery. Esta solución es mucho más rápida y optimiza el tiempo que se tarda en recorrer el resultado de una consulta (Select query).
Conectores Nativos Servidor SQL: Límite: No se puede utilizar la función HPrepareSQLQuery para preparar un procedimiento almacenado que devuelve registros. Se debe utilizar la función HExecuteSQLQuery.

¿Cómo utilizar HPrepareSQLQuery?

Para preparar y ejecutar una consulta varias veces:
  1. Declarar una fuente de datos. Esta fuente de datos contendrá el resultado de la consulta SQL.
  2. Declarar las diferentes variables de la consulta.
    Las variables son variables de cadena de Default. Puede especificar su tipo utilizando el escribir a máquina Property con el Variable.
  3. Preparar la consulta con la función HPrepareSQLQuery.
  4. Especifica el valor de los diferentes parámetros a tener en cuenta y ejecuta la consulta con 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.
Observaciones:
  • La función HPrepareSQLQuery debe utilizarse con:
    • el nombre de la conexión,
    • la constante hQueryWithoutCorrection.
  • Las variables declaradas deben ser idénticas a las utilizadas. 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 la sintaxis de 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).
    En SQL Server, los parámetros se especifican mediante la siguiente notación: @NombreDeParámetro.
    El mismo parámetro se puede utilizar varias veces. En este caso, la Variable correspondiente será reutilizada.

Condición de una clave compuesta en una consulta SQL

Para definir una condición en una clave compuesta en una consulta SQL, las condiciones deben ser especificadas 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 AFile.AnItem, AFile.AnItem1
FROM AFile
WHERE AFile.LastName = "Clark" AND AFile.FirstName = "Vince"

Limitaciones

Esta función no está disponible cuando se utiliza una base de datos a través de Acceso Remoto.
Componente: wd290hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Example HexecuteSqlQuery with WHILE HOut() = False
numero_corrida is int = 0

MyProcedureUltimaCorrida is Data Source

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

HReadFirst(MyProcedureUltimaCorrida, num_corrida)

WHILE HOut() = False

ok = HReadNext(MyProcedureUltimaCorrida, num_corrida)

numero_corrida = MyProcedureUltimaCorrida.num_corrida

END

ELSE

Error(HErrorInfo())

END

Trace(numero_corrida)
BOLLER
29 03 2019

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local