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