Skip to main content

SQL Error Messages

The table below lists the SQL numeric error codes and their error messages. These codes are returned as the SQLCODE variable value.


While this document lists error codes as negative values, JDBC and ODBC clients always receive positive values. For example, if an ODBC or JDBC application returns error code 30, look up error code -30 in this table.

SQLCODE 0 and 100

There are two SQLCODE values that do not represent an SQL error:

SQL Error Codes 0 and 100
Error Code Description
0 Successful Completion
100 No (more) data
  • SQLCODE=0 indicates successful completion of an SQL operation. For a SELECT statement, this usually means the successful retrieval of data from a table. However, if the SELECT performs an aggregate operation, (for example: SELECT SUM(myfield)) the aggregate operation is successful and an SQLCODE=0 is issued even when there is no data in myfield; in this case SUM returns NULL and %ROWCOUNT=1.

  • SQLCODE=100 indicates that the SQL operation was successful, but found no data to act upon. This can occur for a number of reasons. For a SELECT these include: the specified table contains no data; the table contains no data that satisfies the query criteria; or row retrieval has reached the final row of the table. For an UPDATE or DELETE these include: the specified table contains no data; or the table contains no row of data that satisfies the WHERE clause criteria. In these cases %ROWCOUNT=0.


The SQLCODE -400 error “Fatal error occurred” is a general error. It is generated when a more specific SQLCODE error code is not available.

Retrieving SQL Message Texts

To determine the meaning of an SQLCODE numeric code, use the following ObjectScript statement:


This SQLCODE()Opens in a new tab method can also be called as a stored procedure from ODBC or JDBC: %SYSTEM.SQL_SQLCODE(-nnn).

When possible (usually at SQL compile time), error messages include the name of the field, table, view, or other element that caused the error. Placeholders for these names are shown using the <name> syntax convention.

The %msg variable may contain an additional message error text for certain errors. For further details, refer to System Variables in the “Using Embedded SQL” chapter of Using Caché SQL.

The message texts returned are shown below in their English versions. The actual message text returned depends upon your locale setting.

For information on generating ObjectScript general errors from SQLCODE errors, refer to the %SYSTEM.ErrorOpens in a new tab class in the InterSystems Class Reference.

Table of SQL Error Codes and Messages

For ease of use, the SQL Error Codes Table has been divided into the following sub-tables:

SQL Error Codes -1 to -99
Error Code Description
-1 Invalid SQL statement
-2 Exponent digits missing after 'E'
-3 Closing quote (") missing
-4 A term expected, beginning with one of the following: identifier, constant, aggregate, %ALPHAUP, %EXACT, %MVR, %SQLSTRING, %SQLUPPER, %STRING, %UPPER, $$, :, +, -, (, NOT, EXISTS, or FOR
-5 Column number specified in ORDER does not match SELECT list
-6 ORDER BY column after UNION not found as SELECT column
-7 Exponent out of range
-9 Incompatible SELECT lists used in UNION
-10 The SELECT list of the subquery must have exactly one item
-11 A scalar expression expected, not a condition
-12 A term expected, beginning with one of the following: identifier, constant, aggregate, $$, :, (, +, -, %ALPHAUP, %EXACT, %MVR, %SQLSTRING, %SQLUPPER, %STRING, or %UPPER
-13 An expression other than a subquery expected here
-14 A comparison operator is required here
-15 A condition expected after NOT
-16 Quantifier SOME expected after the FOR in the for-expression
-17 A for-condition expected after the ( in the for-expression
-18 IS (or IS NOT) NULL predicate can be applied only to a field
-19 An aggregate function cannot be used in a WHERE or GROUP BY clause
-20 Name conflict in the FROM list over label
-21 Pointer->Field reference may not be modified by an INSERT or UPDATE statement
-22 ORDER must specify column names, not numbers, when after 'SELECT *'
-23 Label is not listed among the applicable tables
-24 Ambiguous sort column
-25 Input encountered after end of query
-26 Missing FROM clause
-27 Field is ambiguous among the applicable tables
-28 Host variable name must begin with either % or a letter
-29 Field not found in the applicable tables
-30 Table or view not found
-31 Field not (found/unique) in table(s)
-32 Outer-join symbol ( =* or *= ) must be between two fields
-33 No field(s) found for table
-34 Optimizer failed to find a usable join order
-35 INSERT/UPDATE/DELETE not allowed for non-updateable view
-36 WITH CHECK OPTION (CHECKOPTION class parameter) not allowed for non-updateable views
-37 SQL Scalar/Aggregate/Unary function not supported for Stream fields
-38 No master map for table
-39 No RowID field for table
-40 ODBC escape extension not supported
-41 An extrinsic function call must have the form '$$tag^routine(...)'
-42 Closing quotes ("") missing following pattern match
-43 Table is ambiguous within #IMPORT schema name list
-44 Duplicate method or query characteristic
-45 Duplicate method in ObjectScript query body
-46 Required method missing in ObjectScript query body
-47 Invalid method or query characteristic
-48 Invalid trigger REFERENCING clause for the trigger's event
-49 Trigger REFERENCING clause cannot be specified when trigger language not SQL
-50 Trigger specifies UPDATE OF <fieldlist> clause when trigger language not SQL
-51 SQL statement expected
-52 Cursor (Already/Was Not) DECLAREd
-53 Constant or variable expected as new value
-54 Array designator (last subscript omitted) expected after VALUES
-55 Invalid GRANT <role> TO or REVOKE <role> FROM
-56 GRANT/REVOKE Action not applicable to an object of this type
-57 Trigger specifies WHEN clause when trigger language not SQL
-58 Duplicate field found in trigger UPDATE OF <fieldlist> clause
-59 Cannot have more than one field
-60 An action (%ALTER, SELECT, UPDATE, etc.) expected
-61 Cursor not updateable
-62 Additional new values expected for INSERT/UPDATE
-63 Data exception - invalid escape character
-64 Incompatible SELECT list is used in INSERT
-65 Positive integer constant or variable expected
-66 Redundant fields found in SELECT list
-67 Implicit join (arrow syntax) not supported in ON clause
-68 Legacy outer join (=*, *=) not supported in ON clause
-69 SET <field> = <value expression> not allowed with WHERE CURRENT OF <cursor>
-70 Multi-Line field only valid for LIKE, Contains ([), or NULL Comparison.
-71 Multi-Line field must be the left operand of the Comparison.
-72 Multi-Line field not valid in ORDER BY clause
-73 Aggregates not supported in ORDER BY clause
-74 Duplicate <select-list> alias names found
-75 <trim_spec> and/or <trim_char> required before FROM in TRIM function.
-76 Cardinality mismatch between the SELECT-list and INTO-list.
-77 Qualified column reference not allowed in this JOIN context.
-78 Invalid transaction state.
-79 Referencing key and referenced key must be the same size
-80 Integer expected
-81 Column Constraint expected
-82 Multiple table %DESCRIPTION definitions found
-83 Multiple table %FILE definitions found
-84 Multiple table %NUMROWS definitions found
-85 Multiple table %ROUTINE definitions found
-86 Invalid field definition, no datatype defined
-87 Invalid table name
-88 Invalid field name
-89 Invalid index name
-90 Invalid view name
-91 Transaction mode cannot be specified more than once
-92 Level of isolation cannot be READ UNCOMMITTED or READ VERIFIED if READ WRITE specified
-93 number of conditions for the DIAGNOSTICS SIZE must be exact numeric
-94 Unsupported usage of OUTER JOIN
-95 Operation disallowed by operation table
-96 Specified level of isolation is not supported
-97 Duplicate select-list names found.
-98 License violation
-99 Privilege violation
SQL Error Codes -101 to -399
Error Code Description
-101 Attempt to open a cursor that is already open
-102 Operation (FETCH/CLOSE/UPDATE/DELETE/...) attempted on an unopened cursor
-103 Positioned UPDATE or DELETE attempted, but the cursor is not positioned on any row
-104 Field validation failed in INSERT, or value failed to convert in DisplayToLogical or OdbcToLogical
-105 Field validation failed in UPDATE
-106 Row to DELETE not found
-107 Cannot UPDATE RowID or RowID based on fields
-108 Required field missing; INSERT or UPDATE not allowed
-109 Cannot find the row designated for UPDATE
-110 Locking conflict in filing
-111 Cannot INSERT into a 'Default Only' RowID or RowID based on field
-112 Access violation
-113 %THRESHOLD violation
-114 One or more matching rows is locked by another user
-115 Cannot INSERT/UPDATE/DELETE on a read only table
-116 Cardinality mismatch on INSERT/UPDATE between values list and number of table columns.
-117 Aggregates not supported in views
-118 Unknown or non-unique User or Role
-119 UNIQUE or PRIMARY KEY constraint failed uniqueness check upon INSERT
-120 UNIQUE or PRIMARY KEY constraint failed uniqueness check upon UPDATE
-121 FOREIGN KEY constraint failed referential check upon INSERT of row in referencing table
-122 FOREIGN KEY constraint failed referential check upon UPDATE of row in referencing table
-123 FOREIGN KEY constraint failed referential check upon UPDATE of row in referenced table
-124 FOREIGN KEY constraint failed referential check upon DELETE of row in referenced table
-125 UNIQUE or PRIMARY KEY Constraint failed uniqueness check upon creation of the constraint
-126 REVOKE with RESTRICT failed.
-127 FOREIGN KEY Constraint failed referential check upon creation of the constraint
-128 Argument to scalar function %OBJECT() must be a stream field
-129 Illegal value for SET OPTION locale property
-130 Before Insert trigger failed
-131 After Insert trigger failed
-132 Before Update trigger failed
-133 After Update trigger failed
-134 Before Delete trigger failed
-135 After Delete trigger failed
-136 View's WITH CHECK OPTION validation failed in INSERT
-137 View's WITH CHECK OPTION validation failed in UPDATE
-138 Cannot INSERT/UPDATE a value for a read only field
-139 Concurrency failure on update: row versions not the same
-140 Invalid length parameter passed to the SUBSTRING function
-141 Invalid input value passed to the CONVERT function
-142 Cardinality mismatch between the view-column-list and view query's SELECT clause
-143 ORDER BY not valid in a view's query
-144 A subquery is not allowed in an insert statement's set/values clause
-145 SQLPREVENTFULLSCAN class parameter is 1 for this table. Query that performs full scan of data map is not allowed
-146 Unable to convert date input to a valid logical date value
-147 Unable to convert time input to a valid logical time value
-148 CREATE VIEW, ALTER VIEW, or a view's query may not contain host variable references
-149 SQL Function encountered an error
-150 Optimistic concurrency locking for a class definition failed
-151 Index is not found within tables used by this statement
-152 Index is ambiguous within tables used by this statement
-161 References to an SQL connection must constitute a whole subquery
-162 SQL Connection is not defined
-201 Table or view name not unique
-220 Gateway query error
-221 Gateway query GetConnection() failed
-222 Gateway query AllocStatement() failed
-223 Gateway query Prepare() failed
-225 Gateway query BindParameters() failed
-226 Gateway query Execute() failed
-227 Gateway query Fetch() failed
-228 Gateway query GetData() failed
-241 Parallel query queue error
-242 Parallel query run-time error
-300 DDL not allowed on this table definition
-301 No Savepoint name
-302 Savepoint names starting with "SYS" are reserved
-303 No implicit conversion of Stream value to non-Stream field in UPDATE assignment is supported
-304 Attempt to add a NOT NULL field with no default value to a table which contains data
-305 Attempt to make field required when the table has one or more rows where the column value is NULL
-306 Column with this name already exists
-307 Primary key already defined for this table
-308 Identity column already defined for this table
-309 The left operand of %CONTAINS is not a property that supports the %Text interface
-310 Foreign key references non-existent table
-311 Foreign key with same name already defined for this table
-312 Invalid schema name. Must use delimited identifiers to reference this schema name
-313 Condition expression not supported for Stream fields
-314 Foreign key references non-unique key/column collection
-315 Constraint or Key not found
-316 Foreign key references non-existent key/column collection
-317 Cannot DROP Constraint - One or more Foreign Key constraints reference this Unique constraint
-319 Referenced table has no primary key defined
-320 Cannot DROP table - One or more Foreign Key constraints reference this table
-321 Cannot DROP view - One or more views reference this view
-322 Cannot DROP column — column is defined on one or more indexes or constraints
-324 Index with this name already defined for this table
-325 Index cannot be dropped because it is the IDKEY index and the table has data
-333 No such index defined
-334 Index name is ambiguous. Index found in multiple tables.
-340 No such database (namespace) defined
-341 Database file already exists
-342 Cannot delete system namespace
-343 Invalid database name
-344 Cannot drop database that you are currently using or connected to
-350 An unexpected error occurred executing SqlComputeCode
-356 SQL Function (function stored procedure) is not defined to return a value
-357 SQL Function (function stored procedure) is not defined as a function procedure
-358 SQL Function (function stored procedure) name not unique
-359 SQL Function (function stored procedure) not found
-360 Class not found
-361 Method or Query name not unique
-362 Method or Query not found
-363 Trigger not found
-364 Trigger with same EVENT, TIME, and ORDER already defined
-365 Trigger name not unique
-366 Schema name mismatch between trigger name and table name
-370 SQL CALL, more arguments specified than defined in the stored procedure
-371 :HVar = CALL ... Specified for a procedure which does not return a value
-372 Support for extrinsic function calls are disabled
-373 An extrinsic function call may not call a % routine
-374 Cannot alter the datatype of a field to/from a stream type when the table contains data
-375 Cannot ROLLBACK to unestablished savepoint
-376 Unsupported CAST target specified
-377 Field appears more than once in assignment list of insert or update statement
-378 Datatype mismatch, explicit CAST is required
-380 Invalid or Missing argument to scalar function
-381 Too many arguments to scalar function
SQL Error Codes -400 to -500
Error Code Description
-400 Fatal error occurred
-401 Fatal Connection error
-402 Invalid Username/Password
-405 Unable to read from communication device
-406 Unable to Write to Server
-407 Unable to Write to Server Master
-408 Unable to start server
-409 Invalid server function
-410 Invalid Directory
-411 No stream object defined for field
-412 General stream error
-413 Incompatible client/server protocol
-415 Fatal error occurred within the SQL filer
-416 CacheInfo Error
-417 Security Error
-422 SELECT request processed via ODBC, JDBC, or Dynamic SQL cannot contain an INTO clause
-425 Error processing stored procedure request
-426 Error preparing stored procedure
-427 Invalid stored procedure name
-428 Stored procedure not found
-429 Invalid number of input/output parameters for stored procedure
-430 Cannot initialize procedure context
-431 Stored procedure parameter type mismatch
-432 Function returned multiple rows when only a single value is expected
-450 Request timed out due to user timeout
-451 Unable to receive server message
-452 Message sequencing error
-453 Error in user initialization code
-454 Error sending external interrupt request
-459 Kerberos authentication failure
-460 General error
-461 Communication link failure
-462 Memory allocation failure
-463 Invalid column number
-464 Function sequence error
-465 Invalid string or buffer length
-466 Invalid parameter number
-467 Column type out of range
-468 Fetch type out of range
-469 Driver not capable
-470 Option value changed
-471 Duplicate cursor name
-472 A collection-valued property was expected
-478 Query recompiled: Result Set mismatch
-500 Fetch row count limit reached
WinSock Error Codes -10050 to -11002
Error Code Description
-10050 WinSock: Network is down
-10051 WinSock: Network is unreachable
-10052 WinSock: Net dropped connection or reset
-10054 WinSock: Connection reset by peer (due to timeout or reboot)
-10055 WinSock: No buffer space available
-10056 WinSock: Socket is already connected
-10057 WinSock: Socket is not connected
-10058 WinSock: Cannot send after socket shutdown
-10060 WinSock: Connection timed out
-10061 WinSock: Connection refused
-10064 WinSock: Host is down
-10065 WinSock: No route to host
-10070 WinSock: Stale NFS file handle
-10091 WinSock: Network subsystem is unavailable
-10092 WinSock: WINSOCK DLL version out of range
-10093 WinSock: Successful WSASTARTUP not yet performed
-11001 WinSock: Host not found
-11002 WinSock: Nonauthoritative host not found
FeedbackOpens in a new tab