| Error Handling | 
 | 
 
All InstantSQL statements return a value in sql-Return (defined in the copy file lisqldef.cpy) indicating the status of the statement execution. This return code value would normally be set to 0 (Sql-OK) or, after an SQL FETCH ROW statement detects the end of the result set, 1 (Sql-EndOfData). Any other return code value indicates an error has occurred. The return code value gives an indication of the type of error. The copy file lisqldef.cpy associates a set of condition-names with sql-Return for the various return code values.
To retrieve further information, the SQL DESCRIBE ERROR statement can be used. Where the error was raised internally within InstantSQL, the type of error will be set to "I" and the message will contain a description of the error. Where the error was raised from an ODBC call, the type of error will be set to "O" and the full contents of the error returned from ODBC will be returned. It is possible that an InstantSQL statement will cause multiple error messages. Therefore, if the full information is required, SQL DESCRIBE ERROR should be repeatedly performed until the return code value sets Sql-EndOfData to true.
Return code values are generally ordered with less severe errors having lower values than more severe errors. During development of an application that uses InstantSQL, it can be helpful to configure DisplayErrorMessageLevel to a low number. This will cause InstantSQL to display an message box for each error that occurs where the return code value of the error is greater than or equal to the configured value. (See the topic InstantSQL Configuration for more information on configuring InstantSQL.)
Return code values are as follows:
 
| Condition-Name | Value | Description | 
| sql-OK | 0 | The
  statement completed successfully. 
  However, there can be ODBC informational messages available to SQL DESCRIBE
  ERROR. | 
| sql-EndOfData | 1 | An
  SQL FETCH ROW statement has detected the end of the query result set; or, an
  SQL DESCRIBE ERROR statement has reached the end of the stored errors for the
  preceding statement.  This return
  value is informative and no error entry is added to the error array for
  retrieval by the SQL DESCRIBE ERROR statement.     ODBC
  3 drivers may also return end of data when an SQL START QUERY statement
  executes an SQL searched UPDATE or DELETE statement that
  affects no rows in the data source. | 
|   |   |   | 
| sqe-ODBCInfo | 1001 | The
  statement completed successully, but there are ODBC informational messages
  available.  This return code value
  only occurs when the configuration option ReturnInfoErrorCode is set to
  true. | 
|   |   |   | 
| sqe-DataTruncation | 2001 | The
  statement resulted in data being truncated when transferring data between the
  COBOL program and the data source. | 
| sqe-DataConvError | 2002 | The
  statement caused a data conversion error when transferring data between the
  COBOL program and the data source.  In
  some cases, data conversion errors are caused by data truncation errors. | 
| sqe-LenIndConvError | 2003 | The
  statement caused a data conversion error when transferring the length indicator
  value between the COBOL program and the data source. | 
| sqe-ConnectionFailed | 2004 | The
  SQL CONNECT DATASOURCE statement failed to connect to the data source because
  the ODBC connection request failed. 
  This is usually the result of an incorrect data source name or
  incorrect login information.  The
  specific cause should be explained by the ODBC errors in the error array for
  the statement. | 
| sqe-QueryFailed | 2005 | An
  SQL PREPARE QUERY statement failed (probably because of an error in the supplied
  SQL statement text string) or one of the browse queries failed (probably
  because the ODBC driver does not support the catalog function necessary to do
  the browse query). | 
|   |   |   | 
| sqe-BadHandleValue | 2101 | The supplied
  input connection or query handle value does not correspond to a valid
  connection or query.  For connection
  handles, this probably means the connection was not successfully completed or
  has been subsequently disconnected. 
  For query handles, this probably means the query was not successful or
  has been dropped. | 
| sqe-BadColumnNumberValue | 2102 | The
  supplied column number value does not correspond to a column in the query
  result set.  Result columns are
  numbered left to right starting from 1. 
  The maximum column number is the number of columns in the query result
  set. | 
| sqe-BadColumnNameValue | 2103 | The
  supplied column name value does not match any column name in the query result
  set.  If the configuration option
  MatchNameCase is set to true, column names must match in case as well as
  spelling. | 
| sqe-BadParamNumberValue | 2104 | The
  supplied parameter number value does not correspond to a parameter in the
  query.  Parameters are numbered from
  left to right starting with 1.  The
  maximum parameter number is the number of parameter markers in the SQL
  statement text string. | 
| sqe-BadSQLTypeValue | 2106 | The
  supplied SQL data type value is not supported by the data source. | 
| sqe-BadParamIOTypeValue | 2107 | The supplied
  parameter input-output type value is not sql-Input, sql-Output or sql-Input-Output. | 
| sqe-BadDateValue | 2108 | The
  supplied date value does not correspond to a date in the Gregorian calendar, contains
  characters other than decimal digits, or is not an integer. | 
| sqe-BadTimeValue | 2109 | The
  supplied time value does not correspond to a valid time, contains characters
  other than decimal digits, or is not an integer. | 
| sqe-BadTimestampValue | 2110 | The
  supplied timestamp value does not correspond to a valid timestamp.  The date portion or the time portion of
  the timestamp is incorrect, as described for the date (2108)and time (2109)
  errors. | 
| sqe-ConnectionLimitHit | 2111 | The program
  has tried to connect to a data source when the maximum number of connections
  has been reached. | 
| sqe-QueryLimitHit | 2112 | The
  program has tried to create a query when the maximum number of queries has
  been reached. | 
| sqe-QueryNotStarted | 2120 | An
  SQL FETCH ROW statement has been executed for a query that has not yet been
  started.  This error will also occur
  if the query has been started, but has subsequently been ended with an SQL
  END QUERY statement that specifies the sql-Close
  option and has not been re-started yet. | 
| sqe-NoRowFetched | 2121 | An
  SQL GET DATA statement has been executed when a row from the query result set
  has not been successfully fetched with an SQL FETCH ROW statement. | 
| sqe-ParamNotBound | 2122 | An SQL
  START QUERY statement has been executed when one or more parameters have not
  yet been bound with the SQL BIND PARAMETER statement. | 
| sqe-SQLStringTooLarge | 2125 | An
  SQL CONSTRUCT QUERY statement has resulted in an SQL statement text string longer
  than the COBOL data item supplied to receive the string. | 
| sqe-BadTxnIsolationValue | 2126 | The
  supplied transaction isolation value does not correspond to a valid
  transaction isolation level.  Valid
  transaction isolation level values are sql-TXN-Read-Uncommitted, sql-TXN-Read-Committed, sql-TXN-Repeatable-Read, and sql-TXN-Serializable. | 
| sqe-BadConcurrencyValue | 2127 | The
  supplied cursor concurrency value does not correspond to a valid concurrency
  value.  Valid cursor concurrency
  values are sql-Concur-Read-Only, sql-Concur-Lock, sql-Concur-RowVer, and sql-Concur-Values. | 
| sqe-BadEndQueryOptionValue | 2128 | The
  supplied end query option value does not correspond to a valid value.  Valid end query option values are sql-Close and sql-Drop for
  the SQL END QUERY and SQL PREPARE QUERY statements.  The SQL PREPARE QUERY statement also allows the sql-None value to indicate taking no action on the query
  after fetching the row. | 
|   |   |   | 
| sqe-WrongNumberOfArgs | 2201 | The number
  of arguments provided for the statement does not agree with the number of
  arguments expected for the statement. | 
| sqe-BadDataSourceArg | 2202 | The
  data source name argument in an SQL CONNECT DATASOURCE statement is numeric
  (a nonnumeric value is required) or could not be converted to a valid data
  source name, possibly because of data truncation. | 
| sqe-BadUserNameArg | 2203 | The
  user name argument in an SQL CONNECT DATASOURCE or SQL SET USER statement is numeric
  (a nonnumeric data item is required) or could not be converted to a valid
  user name, possibly because of data truncation. | 
| sqe-BadUserPasswordArg | 2204 | The
  user password argument in an SQL CONNECT DATASOURCE or SQL SET USER statement
  is numeric (a nonnumeric data item is required) or could not be converted to
  a valid user password, possibly because of data truncation. | 
| sqe-BadConnectionHandleArg | 2205 | The
  connection handle argument in the statement is not a valid data item for
  specifying a connection handle.  The
  argument data item is nonnumeric, has a nonzero scale, or has a precision of
  less than six digits. | 
| sqe-BadQueryHandleArg | 2206 | The
  query handle argument in the statement is not a valid data item for
  specifying a query handle.  The
  argument data item is nonnumeric, has a nonzero scale, or has a precision of
  less than six digits. | 
| sqe-BadSQLStatementArg | 2207 | The
  SQL statement text string argument in an SQL CONSTRUCT QUERY or SQL PREPARE
  QUERY statement is numeric (a nonnumeric data item is required). | 
| sqe-BadColumnNumberArg | 2208 | A
  column name or number argument is numeric, but could not be converted to an
  integer column number value. | 
| sqe-BadColumnNameArg | 2209 | A column
  name or number argument is nonnumeric, but could not be converted to a column
  name string | 
| sqe-BadParamNumberArg | 2210 | A
  parameter number argument is nonnumeric (a numeric integer is required) or
  could not be converted to a parameter number value. | 
| sqe-BadLengthIndicatorArg | 2211 | A
  length indicator argument is not a signed numeric integer data item with at
  least nine digits of precision as required | 
| sqe-BadParamSQLTypeArg | 2212 | An SQL
  data type argument in an SQL BIND PARAMETER statement is not a numeric value,
  as required, or a conversion error occurred while obtaining the data type
  value. | 
| sqe-BadParamIOTypeArg | 2213 | A parameter
  input-output type argument in an SQL BIND PARAMETER statement is not a
  numeric value, as required, or a conversion error occurred while obtaining
  the data type value. | 
| sqe-BadTableNameArg | 2214 | The
  table name argument in an SQL QUERY COLUMNS or SQL QUERY INDEXES statement is
  numeric (a nonnumeric value is required) or could not be converted to a table
  name string, possibly because of data truncation. | 
| sqe-BadProcedureNameArg | 2215 | The
  procedure name argument in an SQL QUERY PROCEDURES statement is numeric (a
  nonnumeric value is required) or could not be converted to a procedure name
  string, possibly because of data truncation. | 
| sqe-BadDescGroupArg | 2218 | The
  output description group argument in one of the status inquiry statements is not
  the correct length, or one of the correct lengths, for the statement in which
  it is specified. | 
| sqe-BadConQryDirArg | 2219 | A
  directive in the SQL CONSTRUCT QUERY statement could not be interpreted.  This error indicates an implementation
  error in InstantSQL. | 
| sqe-BadDateArg | 2220 | An
  argument following the sql-DirDate directive in the SQL CONSTRUCT QUERY statement is
  not a valid date value.  A valid date
  value must have either 8 digits for a YYYYMMDD date or 7 digits for a YYYYDDD
  date. | 
| sqe-BadTimeArg | 2221 | An
  argument following the sql-DirTime directive in the SQL CONSTRUCT QUERY statement is
  not a valid time value.  A valid time
  value must have 2, 4, 6 or 8 digits, representing time formats HH, HHmm,
  HHmmSS, HHmmSScc, respectively. | 
| sqe-BadTimeStampArg | 2222 | An
  argument following the sql-DirTimestamp directive in the SQL CONSTRUCT QUERY statement is
  not a valid timestamp value.  A valid
  timestamp value must be, at a minimum, a valid date value as described in
  error 2220.  Optionally, it may
  include an appended valid time value as described in error 2221. | 
| sqe-BadTxnIsolationArg | 2223 | The
  transaction isolation argument in an SQL START TRANSACTION statement is nonnumeric
  (a numeric value is required) or could not be converted to an integer,
  possibly because of data truncation. | 
| sqe-BadConcurrencyArg | 2224 | The
  cursor concurrency argument in an SQL PREPARE QUERY statement is nonnumeric
  (a numeric value is required) or could not be converted to an integer,
  possibly because of data truncation. | 
| sqe-BadLoginTimeoutArg | 2225 | The
  login timeout argument in an SQL CONNECT DATASOURCE statement is nonnumeric
  (a numeric value is required) or could not be converted to an integer,
  possibly because of data truncation. | 
| sqe-BadQueryTimeoutArg | 2226 | The
  query timeout argument in an SQL START QUERY statement is nonnumeric (a
  numeric value is required) or could not be converted to an integer, possibly
  because of data truncation. | 
| sqe-BadEndQueryOptionArg | 2227 | The
  supplied end query option argument in an SQL END QUERY or SQL PREPARE QUERY
  statement is nonnumeric (a numeric value is required) or could not be converted
  to an integer, possibly because of data truncation. | 
| sqe-BadSeqNoArg | 2228 | The
  supplied sequence number argument in an SQL DESCRIBE ERROR statement is
  nonnumeric (a numeric value is required) or could not be converted to an
  integer, possibly because of data truncation. | 
| sqe-BadCatalogNameArg | 2229 | The
  supplied catalog name argument in a browse query statement is numeric (a
  nonnumeric value is required) or is longer than the maximum length of a
  catalog name. | 
| sqe-BadSchemaNameArg | 2230 | The
  supplied schema name argument in a browse query statement is numeric (a
  nonnumeric value is required) or is longer than the maximum length of a
  schema name. | 
| sqe-BadTableTypeArg | 2231 | The
  supplied table type argument in an SQL QUERY TABLES statement is numeric (a
  nonnumeric value is required) or is longer than the maximum length of a table
  type value list. | 
| sqe-BadDataTypeArg | 2232 | The
  supplied data type argument in an SQL QUERY TYPES statement is nonnumeric (a
  numeric value is required) or could not be converted to an integer, possibly
  because of data truncation. | 
|   |   |   | 
| sqe-InternalError | 2301 | This
  error indicates a problem in the implementation of InstantSQL. | 
| sqe-COBOLAreaError | 2302 | This
  error indicates a problem in the implementation of InstantSQL and is a
  special case of sqe-InternalError. | 
| sqe-LostErrors | 2304 | The
  statement generated more errors than InstantSQL supports for a single
  statement.  The SQL DESCRIBE ERROR
  statement will return descriptions of all the errors up to the limit and then
  return this error description. | 
|   |   |   | 
| sqe-CannotAllocateMemory | 2401 | InstantSQL
  was unable to allocate necessary memory while executing a statement. | 
|   |   |   | 
| sqe-UnexpectedODBCError | 2501 | An
  ODBC function used to implement the InstantSQL statement has returned an
  unexpected error. | 
Copyright
©2000 Liant Software Corp.  All rights
reserved.