| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Вернуть из процедуры Numeric(15,0) |
| Автор: TheCetus 21.3.2006, 19:06 |
| Возникла следующая проблема: на сервере имеется процедура Object_Add которая возвращает один параметр Result (тип Numeric(15,0)) в делфе использую компоненты prcADd : TIBStoredProc. при вызове процедуры prcAdd в моем приложении выскакивает ошибка Invalid Data Convercion. указывал тип параметра ftInteger, ftLargeInt - не помогает. удалось вылечить, если изменить на сервере тип возвращаемого параметра на Result Integer. Вопрос, как обойтись без смены на сервере возвращаемого типа? т.е. чтобы сервер возвращал не Integer а Numeric(15,0) ? Добавлено @ 19:06 в своем приложении использую компоненты с закладки InterBase |
| Автор: Alex 22.3.2006, 10:17 |
| Поставить тип параметра ftFloat |
| Автор: TheCetus 22.3.2006, 11:25 |
| не помогло, ошибка осталась помогает только если установить тип возвращаемого результата numeric(15,x), где x <> 0 база работает на Dialect 3. как думает народ для первичного ключа достаточно будет типа integer? |
| Автор: Alex 22.3.2006, 19:37 |
| А вы думаете для первичного ключа привысить придел integer в 2 147 483 647 если очень боитесь, то поставьте bigint 9 223 372 036 854 775 807 (как говорит один мой знакомый "столько звезд на небе нет, что бы привысить bigint") |
| Автор: TheCetus 22.3.2006, 20:15 |
| т.е. другого решения кроме как выставить ftFloat нет? |
| Автор: Alex 22.3.2006, 20:37 |
| Честно, не проверял, я уже давно не работаю с IB (перешел на FIB+), но если уж так прям ребром вопрос, сейчас посмотрю, что там и почему он float не принимает. А в обще я бы советовал первичные ключи делать bigint |
| Автор: Alex 22.3.2006, 21:04 | ||||
| Может я конечно, что-то не так вас понял, но: Создал процедуру:
кинул на форму IBDatabase1, IBStoredProc1, IBTransaction1 и указал БД и имя процедуры. Создал обработчик
Запустил и у меня все нормально запустилось |