Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > pasing error :(


Автор: DVS83 10.3.2008, 23:21
Пишу запрос в хранимой процедуре (в IBExpert).
При написании запроса на выборку при помощи select возникает ошибка: pasing error;
вод код запроса:
Код

if (par=4) then
     begin
          select * from table
          where name=:name_par;
     end

Подскажите где здесь ошибка?

Автор: ksili 11.3.2008, 06:08
Так а IBExpert не говорит ГДЕ именно ошибка?

Добавлено через 1 минуту и 22 секунды
TABLE - это зарезервированное ключевое слово. Его нельзя использовать для имени таблицы

Автор: DVS83 11.3.2008, 19:26
Цитата

Так а IBExpert не говорит ГДЕ именно ошибка?

привожу скриншот во вложении:
Цитата

b]TABLE [/b]- это зарезервированное ключевое слово. Его нельзя использовать для имени таблицы

я new не дописал  smile 
Посмотрите может я где то в синтаксисе ошибаюсь???

Автор: ksili 12.3.2008, 06:50
В ХП в Select'е надо дописывать куда это всё выбирается:
Код

          select * from new_table
          where name=:name_par
          into :var1, :var2, ... ;

Автор: Deniz 12.3.2008, 07:06
Код

if (par=4) then
     begin
          select * from table
          where name=:name_par;
     end
а что вообще предполагается в данном куске?
Тут либо for select ... либо select 1 запись, и все это, как правильно заметил ksili, into :var1, ...

Автор: DVS83 12.3.2008, 21:50
Цитата(Deniz @ 12.3.2008,  07:06)
Код

if (par=4) then
     begin
          select * from table
          where name=:name_par;
     end
а что вообще предполагается в данном куске?
Тут либо for select ... либо select 1 запись, и все это, как правильно заметил ksili, into :var1, ...

при помощи этой процедуры я планирую осуществлять поиск по названию фильма (присваивать значение из Edit параметру n_film_par)

:var1, var2... это что?

Автор: ksili 13.3.2008, 06:11
Цитата(DVS83 @  13.3.2008,  01:50 Найти цитируемый пост)
:var1, var2... это что? 

Вот гляди, когда ты что-то выбираешь при помощи Query или DataSet, это сохраняется где-то в этих объектах и можно получить эти значения, обратившись к определённым членам объекта (Query->Fields....). А здесь у тебя нету ни Query, ни DataSet. Но где-то же надо сохранять то, что было выбрано... Поэтому для этого используют переменные, объявленные в процедуре (var1, var1 и т.д.). 
Кроме :name_par, :n_film_par тебе надо объявить ещё переменных для результатов выбора (по кол-ву выбираемых полей). Они могут быть выходными или внутренними - без разницы (может и входные можно использовать, я не пробовал). 
И ещё в запросе надо добавить first 1, т.к. могут встретиться 2 фильма с одинаковым названием и произойдёт ошибка:
Код

if (par=4) then
     begin
          select first 1 * from my_table
          where name=:name_par
          into :var1, :var2, :var3, ....;
     end

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)