Hello, Konstantin! Константин wrote: > declare variable s smallint; // 16 bit > begin > i = 1; > s = -65535; // прокатывает хотя для bigint - нет (-65535..0)
вообще то smallint это знаковое, +- 32768. может быть на этапе присвоения в процедуре это и прокатывает, но не прокатит при выполнении или обработке параметров. Достаточно проверить так: create procedure i returns (s smallint) as begin s=60000; suspend; end при select * from i получим arithmetic exception. >Из всего выше перечисленного очень интерестная логика получается ... > А точнее вообще не понятно нифига ... Константин Григорьевич, кончай мутить. Есть стандартные типы, целочисленные, знаковые. И любые отклонения от нормального поведения надо считать багом. Но с попытками изменить "стандартность" этих типов - в сад. Тебе на bigint одного бита не хватило? Для ACL? >PS: Все эксперементы воспроизводились с использованием > отладчика IBExpert пошагово ... еще один.... IBExpert "отлаживает" процедуры путем выдирания из текста процедуры отдельных операторов и выполнения просто как операторов SQL. То есть, он делает это сам, как можешь делать и ты, положив текст процедуры в notepad, и выполняя из нее операторы поштучно. В InterBase/Firebird нет никакой "отдладки процедур". -- Dmitri Kuzmenko, www.ibase.ru, (495) 953-13-34 --~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---

