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.
  • Panorama general
  • ¿Cómo proceder?
  • Los pasos
  • comentario
  • Ejemplo
  • 1. Declaración de la fuente de datos
  • 2. Declaración de las variables
  • 3. Preparación de la consulta
  • 4. Valores de los parámetros y reejecución de la consulta
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
Conector Nativo Oracle: Ejecutar la misma consulta varias veces
Conectores NativosDisponible solo con este tipo de conexión
Panorama general
En algunos casos, puede ser interesante ejecutar la misma consulta varias veces mientras se modifican uno o más parámetros. 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 (conHExecuteSQLQuery) tantas veces como sea necesario mientras modifica los parámetros solicitados.
  2. Preparar la consulta a ejecutar (HPrepareSQLQuery) así como los diferentes parámetros para modificar y ejecutar la consulta tantas veces como sea necesario con HExecuteSQLQuery. Esta segunda solución es mucho más rápida y optimiza el tiempo necesario para navegar por el resultado de la consulta (para una consulta Select).
Esta página de ayuda explica cómo se puede implementar esta segunda solución.
¿Cómo proceder?

Los pasos

Para preparar y ejecutar una consulta varias veces, debe hacerlo:
  1. Declarar una fuente de datos. Esta fuente de datos contendrá el resultado de la consulta SQL.
  2. Declarar los tipos de variables de consulta.
    Las variables se recuperan en el tipo especificado en WLanguage. Las variables son variables de texto por defecto.
    Por lo tanto, pueden ocurrir conversiones entre el tipo nativo de la base de datos y el tipo WLanguage, causando errores inesperados de redondeo o formato (la fecha se transforma en cadena, por ejemplo)..
    Por lo tanto, le aconsejamos que especifique los tipos de WLanguage de las variables con mucho cuidado antes de ejecutar la consulta. Para esto:
    • inicializar el valor de la variable (tipos simples: entero, string, float)
    • especifique el tipo esperado con (no ..Type soportado en esta versión)
  3. Preparar la consulta con HPrepareSQLQuery.
  4. Especifique el valor de los diferentes parámetros a tener en cuenta y ejecute la consulta con 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.

comentario

  • HPrepareSQLQuery debe utilizarse con:
    • el nombre de la conexión,
    • los hQuerySinCorrección ininterrumpido.
  • Las variables declaradas deben ser idénticas a las utilizadas. 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 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).
    El mismo parámetro se puede utilizar varias veces. En este caso, la variable correspondiente será reutilizada.
  • Para ejecutar una consulta sin habilitar el bind, el comando hNoBind debe utilizarse en HExecuteSQLQuery.
Ejemplo
Una consulta de Insertar debe ejecutarse varias veces en la pantalla PERSONA tabla. 3 parámetros se modifican cada vez que se realiza una adición:
  • el apellido.
  • el nombre de pila.
  • la edad.

1. Declaración de la fuente de datos

La fuente de datos se utiliza para manipular las diferentes variables que se modificarán cada vez que se ejecute la consulta:
dsInsert is Data Source

2. Declaración de las variables

En este ejemplo, se modificarán tres variables. Las tres variables pueden declararse. Sin embargo, sólo el edad_persona será declarada.
Para especificar el tipo de una variable de consulta, se puede asignar una variable existente del tipo solicitado a esta variable.
dsInsert.age_person = 0 // Forces the type to integer

// other solution:
// B is int
dsInsert.age_person = B

3. Preparación de la consulta

La consulta se preparará para ser ejecutada varias veces conHPrepareSQLQuery
HPrepareSQLQuery(dsInsert, Connection, hQueryWithoutCorrection, ...
"INSERT INTO PERSON VALUES (:lastname,:firstname,:age_person)")

4. Valores de los parámetros y reejecución de la consulta

Todo lo que tiene que hacer ahora es especificar el valor de los parámetros para cada ejecución de la consulta.
I is int
FOR I = 1 TO 10
dsInsert.lastname = "LastName " + I
dsInsert.firstname = "FirstName " + I
dsInsert.age_person = I
HExecuteSQLQuery(dsInsert)
END
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