meta data for this page
  •  

ascii_char

Library: ib_udf

Changed in: 1.0, 2.0

Better alternative: Internal function ASCII_CHAR()

Description

Returns the ASCII character corresponding to the integer value passed in.

Result type: VARCHAR(1)

Syntax (unchanged)

ascii_char (intval)

Declaration

DECLARE EXTERNAL FUNCTION ascii_char
  INTEGER NULL
  RETURNS CSTRING(1) FREE_IT
  ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf'

The declaration reflects the fact that the UDF as such returns a 1-character C string, not an SQL CHAR(1) as stated in the InterBase declaration. The engine will pass the result to the caller as a VARCHAR(1) though.

The NULL after INTEGER is an optional addition that became available in Firebird 2. When declared with the NULL keyword, the engine will pass a NULL argument unchanged to the function. This causes a NULL result, which is correct. Without the NULL keyword (your only option in pre-2.0 versions), NULL is passed to the function as 0 and the result is an empty string.

For more information about passing NULLs to UDFs, see the note at the end of this book.

Notes:

  • ascii_char(0) returns an empty string in all versions, not a character with ASCII value 0.
  • Before Firebird 2.0, the result type was CHAR(1).