родная udf не проходит...

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
sydenis
Сообщения: 64
Зарегистрирован: 22 фев 2005, 16:09

родная udf не проходит...

Сообщение sydenis » 29 май 2008, 17:18

В fb2.1 создаю новую базу:

SET SQL DIALECT 3;
SET NAMES WIN1251;

CREATE DATABASE 'C:\NewDB.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 8192
DEFAULT CHARACTER SET WIN1251;

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

DECLARE EXTERNAL FUNCTION addYear
TIMESTAMP, INT
RETURNS TIMESTAMP
ENTRY_POINT 'addYear' MODULE_NAME 'fbudf';

получаю ошибку:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 27.
ascii_char.

Функция из fbudf подхватывается без вопросов. Обявление ascii_char взято из ..\Firebird\UDF\ib_udf.sql. Есть ещё файлик ib_udf2.sql, там она прописана как:

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

но тоже не прокатывает с той же ошибкой... где тут грабли?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 29 май 2008, 17:25

ASCII_CHAR - встроена в 2.1

Если сильно надо внешняя - объявляй её в кавычках, а лучше - с другим именем

PS когда будем читать доку на инструмент ???

sydenis
Сообщения: 64
Зарегистрирован: 22 фев 2005, 16:09

Сообщение sydenis » 29 май 2008, 17:38

сенкс
просто в релизной ноте (стр. 49) про ASCII_CHAR ничего не сказано, а до Приложений я сразу добраться не успел :)
да и всё равно проблемма от этого не исчезает..
я, конечно, твоим советом воспользуюсь, но грабли-то останутся

belov-evgenii
Сообщения: 52
Зарегистрирован: 28 сен 2007, 10:19

Сообщение belov-evgenii » 30 май 2008, 14:11

sydenis писал(а):да и всё равно проблемма от этого не исчезает..
я, конечно, твоим советом воспользуюсь, но грабли-то останутся
Ты когда ходишь (инструмент осваиваешь) - глаза разувай (доку читай). Тогда и грабли видно. А может и совсем их не будет

Ответить