FB 1.5.2
Наковырял такую неприятность. В таблице поле s_id типа SMALLINT. В процедуре пишу
EXECUTE STATEMENT 'SELECT s_id FROM Tablica' INTO :n;
При этом объявлено
DECLARE VARIABLE n INTEGER;
При выполнении процедуры на приведенной конструкции ругается о несовместимости типов. Всегда считал, что SMALLINT приводится к INTEGER весьма легко...
Если сделать одного типа (и поле, и переменную), то все гуд.
EXECUTE STATEMENT ... INTO - несовместимость типов
-
- Сообщения: 19
- Зарегистрирован: 02 авг 2005, 18:53
EXECUTE STATEMENT ... INTO - несовместимость типов
Последний раз редактировалось Desdechado 02 авг 2005, 21:39, всего редактировалось 1 раз.
-
- Сообщения: 19
- Зарегистрирован: 02 авг 2005, 18:53
да нет, случайно попался, портировал с Оракла хранимку...
если имелось ввиду вот это
Return values are strictly checked for data type in order to avoid unpredictable type-casting
exceptions. For example, the string ’1234’ would convert to an integer, 1234, but ’abc’ would give
a conversion error.
то, имхо, второе предложение не так очевидно, как вам показалось. Там, вроде, написано, что строка БУДЕТ конвертироваться. Я же вообще числа, причем совместимые по типам снизу вверх, конвертирую.
если имелось ввиду вот это
Return values are strictly checked for data type in order to avoid unpredictable type-casting
exceptions. For example, the string ’1234’ would convert to an integer, 1234, but ’abc’ would give
a conversion error.
то, имхо, второе предложение не так очевидно, как вам показалось. Там, вроде, написано, что строка БУДЕТ конвертироваться. Я же вообще числа, причем совместимые по типам снизу вверх, конвертирую.
Когда мне кажется, я крещусь.
Return values are strictly checked for data type in order to avoid unpredictable type-casting
exceptions. For example, the string ’1234’ would convert to an integer, 1234, but ’abc’ would give
a conversion error.
Перевожу:
Возвращаемые значения жёстко контролируются по типам во избежание непредсказуемых ошибок преобразования типов. НАПРИМЕР (компрене ву? например!) при няевных преобразованиях строк строка содержащая '1234' успешно конвертируется в целое, а содержащая 'абеце' будет приводить к возникновению исключения.
Так вот. Намекаю. Никто не мешает благородному дону закастить свой smallint в int явно внутри запроса. И строку тоже, если человек понимает что он делает и берёт на себя ответственность. А вот автомат в данном случае за него этого делать не будет, слишком много вариантов и велика вероятность втихомолку выдавать не то, что мы с тобой ожидаем.
Return values are strictly checked for data type in order to avoid unpredictable type-casting
exceptions. For example, the string ’1234’ would convert to an integer, 1234, but ’abc’ would give
a conversion error.
Перевожу:
Возвращаемые значения жёстко контролируются по типам во избежание непредсказуемых ошибок преобразования типов. НАПРИМЕР (компрене ву? например!) при няевных преобразованиях строк строка содержащая '1234' успешно конвертируется в целое, а содержащая 'абеце' будет приводить к возникновению исключения.
Так вот. Намекаю. Никто не мешает благородному дону закастить свой smallint в int явно внутри запроса. И строку тоже, если человек понимает что он делает и берёт на себя ответственность. А вот автомат в данном случае за него этого делать не будет, слишком много вариантов и велика вероятность втихомолку выдавать не то, что мы с тобой ожидаем.
-
- Сообщения: 19
- Зарегистрирован: 02 авг 2005, 18:53