Страница 1 из 1

Проблемка с приведением типов

Добавлено: 31 авг 2006, 15:50
SAN_i
использую FB 1.5

есть табличка в ней поле типа numeric(4,0) в нём данные 2006
пишу процедуру, в ней текст:

Код: Выделить всё

    select cast(END_YEAR as char)
      from san_proj_zak
      where san_proj_zak.id = :curent_id
      order by san_proj_zak.id
    into year_dead;
в результате ошибка:
Overflow occurred during data type conversion.
conversion error from string "2006".
Подскажите плз. как решить эту проблемку

Заранее спасибо

Добавлено: 31 авг 2006, 15:57
Dimitry Sibiryakov
Естественно. Четыре символа не влезают в один. Да и код ты, собственно, привел левый, потому что он не должен компилироваться в принципе (INTO без двоеточия).

Добавлено: 31 авг 2006, 16:02
SAN_i
насчёт кода, то я во всех процедурах, тригерах двоеточие после into не ставил и всё работает нормально

за ответ спасибо вьехал, теперь работает

исправленный вариант:

Код: Выделить всё

select cast(END_YEAR as char(4))
      from san_proj_zak
      where san_proj_zak.id = :curent_id
      order by san_proj_zak.id
    into year_dead;

Добавлено: 31 авг 2006, 16:54
WildSery
2 Дмитрий:
Двоеточие нужно только когда переменные внутри запроса используешь или для вызова процедуры (UDF, etc.)

2 ЫФТ_ш:
selct ... into Var может обработать только одну строку, если он вернёт две и больше - будет ошибка. А если у тебя всегда одна возвращается, то нахрена order by?
кроме того, не забывай перед селектом year_dead=null сделать, к примеру, а то если он ни одной записи не вернёт - будет предыдущее значение.

Код: Выделить всё

year_dead=null;
select first 1 cast(END_YEAR as char(4)) 
      from san_proj_zak 
      where san_proj_zak.id = :curent_id 
      order by san_proj_zak.id 
    into year_dead;
либо так