21.10.2013 Views

Firebird 2.1 Language Reference Update

Firebird 2.1 Language Reference Update

Firebird 2.1 Language Reference Update

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Notes:<br />

External functions (UDFs)<br />

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

• Depending on how you declare it (see CSTRING note), this function can accept and return strings of up to<br />

32767 characters.<br />

• When calling this function, make sure endlength does not exceed the declared result length.<br />

• If endlength is less than str's length, str is truncated to endlength. If endlength is negative, the<br />

result is NULL.<br />

• A NULL endlength is treated as if it were 0.<br />

• If padchar is empty, or if padchar is NULL and the function has been declared without the NULL keyword<br />

after the last argument, str is returned unchanged (or truncated to endlength).<br />

• Before <strong>Firebird</strong> 2.0, the result type was CHAR(n).<br />

• A bug that caused an endless loop if padchar was empty or NULL has been fixed in 2.0.<br />

• In <strong>Firebird</strong> 1.5.1 and below, the default declaration used CSTRING(80) instead of CSTRING(255).<br />

Library: ib_udf<br />

Changed in: 1.5, 1.5.2, 2.0<br />

Better alternative: Internal function TRIM()<br />

rtrim<br />

Description: Returns the input string with any trailing space characters removed. In new code, you are advised<br />

to use the internal function TRIM instead, as it is both more powerful and more versatile.<br />

Result type: VARCHAR(n)<br />

Syntax (unchanged):<br />

rtrim (str)<br />

Declaration:<br />

DECLARE EXTERNAL FUNCTION rtrim<br />

CSTRING(255) NULL<br />

RETURNS CSTRING(255) FREE_IT<br />

ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf'<br />

The above declaration is from the file ib_udf2.sql. The NULL after the argument is an optional<br />

addition that became available in <strong>Firebird</strong> 2. If the argument is declared with the NULL keyword,<br />

the engine will pass a NULL argument value unchanged to the function. This leads to a NULL result,<br />

which is correct. Without the NULL keyword (your only option in pre-2.0 versions), NULL is passed<br />

to the function as an empty string and the result is an empty string as well.<br />

187

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!