Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа функцией UDF при вставки записи в Таблицу [D7, FB1.5]


ganda ©   (2009-06-04 14:57:00) 

есть некая функция назовём её FUN1 и есть поле F1.
F1-  символьное поле размер 10 символов.
скрипт создания FUN1

DECLARE EXTERNAL FUNCTION FUN2
   CSTRING(255)
RETURNS CSTRING(255)
ENTRY_POINT 'CodeText' MODULE_NAME 'GNUDF';

теперь сам текст вставки записи
insert into table (F1) values (Fun1(:F1));
при выполнение выдаёт ошибку:
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.


Сергей М.   (2009-06-04 21:59:00) [1]

Тут еще и мемликами пахнет ..

FREE_IT осознанно опущен ?


PEAKTOP   (2009-06-04 16:50:00) [2]

Попробуй

DECLARE EXTERNAL FUNCTION FUN2
 CSTRING(255) CHARACTER SET NONE
RETURNS CSTRING(255)
ENTRY_POINT 'CodeText' MODULE_NAME 'GNUDF';

>>А если его сунуть в тригер прокатить или нет?!
А че сам не попробовал ? :)


ganda   (2009-06-04 15:41:00) [3]

База имеет набор символов NONE и поле тоже имеет Character set None (1, 2)

UDF  скомпилена  на D7 (4)

и 3 вариант не прокатывает. А если его сунуть в тригер прокатить или нет?!


PEAKTOP   (2009-06-04 15:33:00) [4]

1) База данных с каким набором символовов создана ?

http://firebirdsql.su/doku.php?id=create_database

2) Домен таблицы table.F1 с каким CHARACTER SET создан ?
http://firebirdsql.su/doku.php?id=create_domain

3) А подключение с каким LC_CTYPE идет ?

DECLARE EXTERNAL FUNCTION FUN2
  CSTRING(255) CHARACTER SET WIN1251
RETURNS CSTRING(255)
ENTRY_POINT 'CodeText' MODULE_NAME 'GNUDF';


4) И последнее, самой гнустное. Если UDF скомпилена в Delphi2009, то функция ожидает юникодную строку, а Firebird отдает ей Ansi.
Или наоборот.


Наверх

Титульная страница Поиск, карта сайта Написать письмо