Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The code for the preceding examples assumes that the queries to the database will always be successful.  UnfortunatelyUnfortunately, this is not always the case.  The The code below intentionally generates an error because the table referenced in the SQL Select statement does not exist:

...

Code Block
declare subroutine msg
$insert XO_Equates
$insert Msg_Equates
 
hXO = XOInstance ("NWIND")
 
hQry = 0
if hXO then
   * create the query handle for the connection handle
   hQry = QryInstance(hXO)
   if hQry then
       
      * force an error - table doesn't exist
      
        Script = "select * from nonexisting_table"
        Flag = QryMethod(hQry, QRY_EXECUTE$, Script)
      if Flag then
         call msg(@window, 'Select Statement executed successfully!')
      end else
         gosub error
      end
      
end else
   gosub error
end
 
* close the query handle
Flag = QryMethod(hQry, QRY_DESTROY$)
* close the connection
Flag = XOMethod(hXO, XO_DESTROY$)
return 0
 
*************************************************************
* Error handling subroutine
Error:
   if hQry then
      Flag = QryMethod(hQry, QRY_GETERROR$, "", "", "",|
                       "",Text)
   end else
      Flag = XOMethod(hXO, QRY_GETERROR$, "", "", "", |
                      "",Text)
   end
   convert @vm to @tm in Text
   Def = ""
   Def<MTEXT$>    = Text
   Def<MCAPTION$> = "ExecuteScript Error"
   Def<MICON$>    = "!"
   Msg(@window, Text)
 
return
*****************************************************************

...

After each query execution (calling QryMethod() using the QRY_EXECUTE$ code), it is good programming practice to test whether or not an error occurred.  Test Test the return code from QryMethod(); if it is not zero, then call a subroutine that retrieves the text of the error message (calling QryMethod() using the QRY_GETERROR$ code) and then outputs the message using the Msg() function.