not belong to referenced table

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
maksbazhin
Сообщения: 5
Зарегистрирован: 17 окт 2012, 13:47

not belong to referenced table

Сообщение maksbazhin » 21 дек 2012, 12:55

Здравствуйте.
Такая ситуация:
Firebird 2.5, IBEScript.
Есть таблица с полем EVENTS_DATA мне нужно получить все необработанные события с давностью больше 5 минут для чего:

d2=current_timestamp()-0,00347;
select MAX(EVENTS_ID) from EVENTS where EVENTS_DATA <= d2 into :EVENTS_ID;

в ответ получаю: column does not belong to referenced table.
Пробовал кавычки - не помогает либо parsing error либо нулевой результат, что может быть.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: not belong to referenced table

Сообщение Dimitry Sibiryakov » 21 дек 2012, 15:45

Переменные в запросах предваряются двоеточием. RTFM Language Reference.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: not belong to referenced table

Сообщение kdv » 21 дек 2012, 21:10

это не MS SQL. В Firebird нет понятия "скриптов". все операторы в "скрипте" выполняются по одиночке, и между ними не может быть никакой связи.
DS правильно сказал, что d2 должен быть :d2. Но это относится к IBEScript.
Вы можете почитать про execute block в Firebird 2.x, и это будет более правильно. Но там тоже придется параметрам указывать :.

maksbazhin
Сообщения: 5
Зарегистрирован: 17 окт 2012, 13:47

Re: not belong to referenced table

Сообщение maksbazhin » 21 дек 2012, 22:07

Переменные в запросах предваряются двоеточием
Спасибо получилось, в таком варианте:
d2=current_timestamp()-0,00347;
select MAX(EVENTS_ID) from EVENTS where EVENTS_DATA <= :d2 into :EVENTS_ID;
когда ранее пытался поставить : перед d2=current_timestamp()-0,00347; выпадал parsing error, не знал что надо в запросах поэтому парафин :D .

Ответить