4D v16

Seguimento e depuração do código SQL

Página Inicial

 
4D v16
Seguimento e depuração do código SQL

Seguimento e depuração do código SQL  


 

 

Em 4D, há duas possibilidades principais para a localização e correção de seu código: ou bem utilizando o para localizar e corrigir qualquer erro ou chamando ao comando ON ERR CALL para capturar o erro e tomar as medidas adequadas. Podemos utilizar estas duas técnicas para resolver os problemas encontrados com o código SQL.
Este é um exemplo onde falta um parênteses intencionalmente: no lugar de HAVING SUM(Sold_Tickets <:$MinSoldTickets), temos 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 você pode ver na janela inferior, a aplicação detecta o erro e abre a que oferece informação mais detalhada sobre o erro e o lugar onde ocorreu.  Então é fácil de corrigir somente em pressionar o botão Editar.


Se o erro é más complexo, a aplicação oferece mais informação incluindo o conteúdo da pilha, que pode ser vista pressionando o botão Detalhes.
Para provar o exemplo anterior, na janela principal da base "4D SQL Code Samples", pressione o botão Depurar o código SQL.

A segunda possibilidade principal para o seguimento de erros SQL utiliza o comando ON ERR CALL.
Este é um exemplo que instala o método SQL_Error_Handler para detectar erros encontrados no código SQL.

 ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 C_LONGINT($MovieYear;$MinSoldTickets;MySQL_Error)
 $MovieYear:=1979
 $MinSoldTickets:=10000000
 MySQL_Error:=0
 
  ` Instalação do método SQL_Error_Handler para interceptar os erros
 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
  ` Desinstalação do método SQL_Error_Handler
 ON ERR CALL("")


O método SQL_Error_Handler é o seguinte:

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

Para provar o exemplo anterior, na janela principal desde a base "4D SQL Code Samples" pressione o botão Using ON ERR CALL.

 
PROPRIEDADES 

Produto: 4D
Tema: Tutorial

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de SQL ( 4D v16)