Informix Error -471
-471 An invalid descriptor name has been used.
This error is generated if the name of the SQL descriptor is either an empty string or an uninitialized host variable. Descriptor names follow the same naming rules as identifiers. Check the name of the descriptor, and verify that it has been set with the SET DESCRIPTOR statement, allocated with the ALLOCATE DESCRIPTOR statement, or otherwise initialized.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-471 fires when a SQL descriptor name is empty or uninitialized — descriptor names have to follow standard identifier naming conventions, and a blank or garbage value doesn't qualify.
- A descriptor name variable that was never initialized before being used in
ALLOCATE DESCRIPTOR,SET DESCRIPTOR, or a related statement. - An empty string used as a descriptor name.
- A descriptor name assembled programmatically from a value that turned out empty or invalid.
Solutions / Resolution
- Ensure the descriptor name is properly set via
SET DESCRIPTOR, allocated viaALLOCATE DESCRIPTOR, or otherwise explicitly initialized before use, per the official guidance. - Confirm the descriptor name follows standard identifier naming conventions — non-empty, starting with a letter, and so on.
- For programmatically assembled descriptor names, validate the source value before constructing the statement.
Examples
Properly initializing a descriptor name
ALLOCATE DESCRIPTOR 'desc1';
-- 'desc1' is now a valid, properly initialized descriptor name
The disallowed empty/uninitialized name
char desc_name[32]; /* uninitialized */
/* ALLOCATE DESCRIPTOR :desc_name; */
/* -471 if desc_name is empty or contains garbage */
Diagnostic Checks
- Check the actual value of the descriptor name variable at the point of use.
- Confirm it follows standard identifier naming conventions — non-empty, valid characters.
Related Errors / Related Topics
- -469 — "This descriptor does not exist." A related descriptor-usage error, about a name that's validly formed but never allocated, rather than an invalid/empty name itself.
- -354 — "Incorrect database or cursor name format." A related identifier-naming-convention restriction, in a different context (database/cursor names rather than descriptor names).
Check the descriptor name variable's actual runtime value — an uninitialized or empty variable
is the most common cause of this error, distinct from -469's "never allocated" condition.