Ошибка создания пользовательской функции Firebird

У меня есть база данных firebird, которую мне нужно воссоздать. Он содержит внешнюю функцию UDF. Я сделал SQL-дамп структуры БД с помощью IB Expert:

DECLARE EXTERNAL FUNCTION LPAD
    CSTRING(255),
    INTEGER,
    CSTRING(1)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'

Однако при выполнении запроса я получаю сообщение об ошибке:

Недопустимый токен.
Динамическая ошибка SQL.
Код ошибки SQL = -104.
Неизвестный токен — строка 1, столбец 27.
'LPAD'.

Я использую Firebird 2.1.1 в Windows. Кто-нибудь знает, в чем может быть проблема?


person Rytis    schedule 18.08.2009    source источник


Ответы (1)


попробуй это

DECLARE EXTERNAL FUNCTION "LPAD"
    CSTRING(255),
    INTEGER,
    CSTRING(1)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'
person RRUZ    schedule 18.08.2009
comment
Спасибо, это сработало - я пытался экранировать одинарными кавычками, но это не сработало. Интересно, почему это имеет какое-то значение, и почему IB Expert экспортирует его неправильно... - person Rytis; 18.08.2009
comment
В Firebird 2.1 добавлена ​​внутренняя реализация LPAD. Поскольку LPAD теперь является ключевым словом, в этом контексте оно не поддерживается без экранирования. См. firebirdsql.org/refdocs/langrefupd21-intfunc-lpad.html. - person garethm; 04.05.2011