ossiejhmoore

Livelink: Get SQL Error Message Example

Aug 30th, 2011
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. /*
  2.  
  3. Example showing how to get a reasonable error message from an OScript
  4. CAPI.Exec call ending in error.
  5.  
  6. Below is sample output from running Test().
  7.  
  8. Output:
  9. ---------------------------
  10. SQL: select * from i_am_a_bogus_table
  11. Error Encountered: ORA-00942: table or view does not exist
  12. ---------------------------
  13. SQL: select to_number('x') from dual
  14. Error Encountered: ORA-01722: invalid number
  15. ---------------------------
  16. SQL: select non_existent_field from (select 'x' from dual)
  17. Error Encountered: ORA-00904: "I_AM_A_NON_EXISTING_FIELD": invalid identifier
  18. ---------------------------
  19.  
  20. */
  21.  
  22. function void Test()
  23. Dynamic prgCtx = $copediscovery.Utils.GetPrgCtx('Admin')
  24. List sqlList = { \
  25. "select * from i_am_a_bogus_table", \
  26. "select to_number('x') from dual", \
  27. "select i_am_a_non_existing_field from (select 'x' from dual)" }
  28. String sql
  29. Assoc retVal
  30.  
  31. echo("---------------------------");
  32. for sql in sqlList
  33. retVal = ExecuteSQL(prgCtx, sql)
  34. echo("SQL: ", sql)
  35. if (!retVal.OK)
  36. echo("Error Encountered: ", retVal.ErrMsg)
  37. end
  38. echo("---------------------------");
  39. end
  40. end
  41.  
  42.  
  43. function Assoc ExecuteSQL(Dynamic prgCtx, String sql)
  44. Object dbConnect = prgCtx.fDbConnect
  45. CAPICONNECT conn = dbConnect.fConnection
  46. Dynamic results
  47. Dynamic dbErrList
  48. Integer ERR_TO_DISPLAY = 1
  49. Assoc retVal
  50. retVal.OK = false
  51. retVal.ErrMsg = Undefined
  52. retVal.dbResults = Undefined
  53. results = CAPI.Exec(conn, sql)
  54. if (IsError(results))
  55. dbErrList = dbConnect.CheckError(results)
  56. retVal.ErrMsg = Str.Format('%1', dbErrList.ErrorList[ ERR_TO_DISPLAY ].Detail)
  57. else
  58. retVal.OK = true
  59. retVal.dbResults = results
  60. end
  61. return retVal
  62. end
Add Comment
Please, Sign In to add comment