4D v16

Seguimiento y depuración del código SQL

Inicio

 
4D v16
Seguimiento y depuración del código SQL

Seguimiento y depuración del código SQL  


 

 

En 4D, hay dos posibilidades principales para la localización y corrección de su código: o bien utilizando el para  localizar y corregir cualquier error o llamando al comando ON ERR CALL para capturar el error y tomar las medidas adecuadas. Podemos utilizar estas dos técnicas para resolver los problemas encontrados con el código SQL.
Este es un ejemplo donde falta un paréntesis intecionalmente: en lugar de HAVING SUM(Sold_Tickets <:$MinSoldTickets), tenemos HAVING SUM(Sold_Tickets <:$MinSoldTickets.

 ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 C_LONGINT($MovieYear;$MinSoldTickets)
 $MovieYear:=1979
 $MinSoldTickets:=10000000
 
 Begin SQL
    SELECT Year_of_Movie, SUM(Sold_Tickets)
    FROM MOVIES
    WHERE Year_of_Movie >= :$MovieYear
    GROUP BY Year_of_Movie
    HAVING SUM(Sold_Tickets < :$MinSoldTickets
    ORDER BY 1
    INTO :aMovieYear,  :aSoldTickets;
 End SQL


Como puede ver en la ventana inferior, la aplicación detecta el error y abre la que ofrece información más detallada sobre el error y el lugar donde ocurrió. Es entonces fácil de corregir con sólo presionar el botón Editar.


Si el error es más complejo, la aplicación ofrece más información incluyendo el contenido de la pila, que se puede ver presionando el botón Detalles.
Para probar el ejemplo anterior, en la ventana principal de la base "4D SQL Code Samples", presione el botón Depurar el código SQL.

La segunda posibilidad principal para el seguimiento de errores SQL utiliza el comando ON ERR CALL.
Este es un ejemplo que instala el método SQL_Error_Handler para detectar errores encontrados en el código SQL.

 ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 C_LONGINT($MovieYear;$MinSoldTickets;MySQL_Error)
 $MovieYear:=1979
 $MinSoldTickets:=10000000
 MySQL_Error:=0
 
  ` Instalación del método SQL_Error_Handler para interceptar los errores
 ON ERR CALL("SQL_Error_Handler")
 Begin SQL
    SELECT Year_of_Movie, SUM(Sold_Tickets)
    FROM MOVIES
    WHERE Year_of_Movie >= :$MovieYear
    GROUP BY Year_of_Movie
    HAVING SUM(Sold_Tickets < :$MinSoldTickets
    ORDER BY 1
    INTO :aMovieYear,  :aSoldTickets;
 End SQL
  ` Desinstalación del método SQL_Error_Handler
 ON ERR CALL("")


El método SQL_Error_Handler es el siguiente:

 If(MySQL_Error#0)
    ALERT("SQL Error number: "+String(MySQL_Error))
 End if

Para probar el ejemplo anterior, en la ventana principal de de la base "4D SQL Code Samples" presione el botón Using ON ERR CALL.

 
PROPIEDADES 

Producto: 4D
Tema: Tutorial

 
HISTORIA 

 
ARTICLE USAGE

Manual de SQL ( 4D v16)