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 / Conectores Nativos/Accesos Nativos / Conector Nativo Oracle
  • Presentación
  • ¿Cómo proceder?
  • Etapas
  • Observaciones
  • Ejemplo
  • 1. Declaración de la fuente de datos
  • 2. Declaración de 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/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Conector Nativo Oracle: Ejecutar la misma consulta varias veces
Conectores NativosDisponible solo con este tipo de conexión
Presentación
En algunos casos, puede ser useful ejecutar la misma consulta varias veces modificando uno o varios 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 directamente (con HExecuteSQLQuery) tantas veces como sea necesario y cambie cada vez el o los parámetros deseados.
  2. Prepare la consulta a ejecutar (con HPrepareSQLQuery) así como los diferentes parámetros 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 (consulta SELECT).
Esta página de ayuda explica cómo se puede implementar esta segunda solución.
¿Cómo proceder?

Etapas

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 los tipos de variables de consulta.
    Las variables se recuperan en el tipo especificado en WLanguage. Las variables son variables de texto de Default.
    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 ello:
    • inicializar el valor de la Variable (tipos simples: entero, string, float)
    • especificar el tipo esperado con el escribir a máquina Property (no soportado en esta versión)
  3. Prepare la consulta con 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

  • HPrepareSQLQuery debe utilizarse con:
    • el nombre de la conexión,
    • la constante de 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).
    El mismo parámetro se puede utilizar varias veces. En este caso, la Variable correspondiente será reutilizada.
  • Para ejecutar una consulta sin activar la opción bind, utilice la constante hNoBind en HExecuteSQLQuery.
Ejemplo
Una consulta de inserción debe ser ejecutada varias veces en la 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 variables

En este ejemplo, se modificarán tres variables. Las tres variables pueden declararse. Sin embargo, sólo se declarará el age_person Variable.
Para especificar el tipo de una consulta Variable, asigne a esta Variable una Variable existente del tipo deseado.
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 estará preparada para ser ejecutada varias veces con HPrepareSQLQuery.
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

Última modificación: 30/10/2022

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