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
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
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.