Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Почему не выполняется запрос - создание хранимой процедуры?   Найти похожие ветки 

 
vishnia   (2006-05-13 13:18) [0]

Для создания уник.значения поля создаю генератор
CREATE GENERATOR GROUPS_N_GROUP;
Затем устанавливаю его нач.значение
SET GENERATOR GROUPS_N_GROUP TO 1;
И хочу создать хранимую процедуру:
CREATE PROCEDURE GET_N_GROUP
RETURNS ( NG SMALLINT)
AS
BEGIN
 NG= GEN_ID(GROUPS_N_GROUP,1);
END


Выдает ошибку:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE PROCEDURE GET_N_GROUP
RETURNS ( NG SMALLINT)
AS
BEGIN
NG= GEN_ID(GROUPS_N_GROUP,1)

Запятую, видимо, не замечает. Не подскажете, как с этим быть?


 
unknown ©   (2006-05-13 13:29) [1]


> vishnia   (13.05.06 13:18)

NG= GEN_ID(GROUPS_N_GROUP,1) ;
END

Ы?


 
vishnia   (2006-05-13 13:32) [2]

Не пойму что-то


 
unknown ©   (2006-05-13 13:41) [3]


> vishnia   (13.05.06 13:32) [2]
>
> Не пойму что-то
>

> Выдает ошибку:
> Dynamic SQL Error
> SQL error code = -104
> Unexpected end of command

Переводим. "Непредвиденный конец команды". Почему? в PSQL надо ставить ;
А begin всегда должен завершать end
И suspend; где?


 
vishnia   (2006-05-13 13:51) [4]

Так я же ставлю ;  и end (см. текст процедуры в моем вопросе) или это  какуя-то особенная ; ?
> И suspend; где?

Для чего он?


 
Johnmen ©   (2006-05-13 13:51) [5]

Весь вопрос в том, ГДЕ создаёшь.

ЗЫ
Значения генераторов имеют тип int64 (в старых версиях int). Поэтому использование smallint сомнительно.
Во-вторых, при создании генератора его значение автоматом инициализируется нулём. И след.значение будет 1 (при шаге 1).


 
unknown ©   (2006-05-13 13:57) [6]


> vishnia   (13.05.06 13:51) [4]

В [0] нет : в процедуре.
И end нет и вообще, текст процедуры приведен не полностью.


 
vishnia   (2006-05-13 14:01) [7]

я ввожу такой запрос:
CREATE PROCEDURE GET_N_GROUP
RETURNS ( NG SMALLINT)
AS
BEGIN
 NG= GEN_ID(GROUPS_N_GROUP,1);
END

В результате его выполнения (вернее невыполнения) выдается ошибка, текст которой я приводила выше. По-моему и ";" , и "end" в ней на месте, или я одна это вижу? Если же этого недостаточно, чтобы запрос был выполнен, то что нужно добавить?


 
unknown ©   (2006-05-13 14:05) [8]

Сорри, перечитал вопрос, осознал что неправ.
Невнимательно прочитал первый раз млин :(
Кстати, вот это :
CREATE GENERATOR GROUPS_N_GROUP;
SET GENERATOR GROUPS_N_GROUP TO 1;
CREATE PROCEDURE GET_N_GROUP
RETURNS ( NG SMALLINT)
AS
BEGIN
NG= GEN_ID(GROUPS_N_GROUP,1);
END

Протестировал - все создается, без проблем.


 
unknown ©   (2006-05-13 14:08) [9]

И выполняется без проблем.
Так что Вы чего-то недоговариваете :)


 
Johnmen ©   (2006-05-13 14:11) [10]

>Невнимательно прочитал ...

Это и так видно....


 
vishnia   (2006-05-13 14:17) [11]


> Невнимательно прочитал первый раз млин :(


Может компилятор такой-же невниммательный как ты :-)
Он в упор не замечает точку с запятой, хотя первые два запроса из [0] выполнились без всяких проблем. Что-нибудь можно сделать с этим? Это Firebird 1.5, создаю через IBConsole.
В документации по CREATE PROCEDURE стоит еще необязательная часть SET TERM, может как-то с этим связано?


 
Johnmen ©   (2006-05-13 14:26) [12]

Во-во и я говорю, повнимательней бы. Особенно к SET TERM.
Ибо разделителем SQL КОМАНД командной строки в ИБКонсоли является ;
Что совпадает с разделителем команд в процедуре.
А значит их надо различать. И вот здесь SET TERM тебе в руки...:)


 
vishnia   (2006-05-13 14:31) [13]


> И вот здесь SET TERM тебе в руки


Да, и я это уже сделал вот так:
SET TERM !! ;
CREATE PROCEDURE GET_N_GROUP
RETURNS ( NG SMALLINT)
AS
BEGIN
NG= GEN_ID(GROUPS_N_GROUP,1);
END !!
SET TERM ; !!

Спасибо всем за советы и внимание!


 
unknown ©   (2006-05-13 14:35) [14]


> vishnia   (13.05.06 14:31) [13]

Лена, (судя по мылу :)) выбросте нафик ibconsole, для FB лучше пользоваться
IBExpert http://ibexpert.com/rus/index.html - для exUSSR бесплатно.


 
Desdechado ©   (2006-05-13 20:30) [15]

до поста vishnia   (13.05.06 14:17) [11] я почему-то был уверен, что команды SQL вызываются по очереди из дельфийского кода
и ошибка в этом случае возникать не должна

а оно, оказывается, из посторонней программы...



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.054 c
2-1151675414
Новичоккк
2006-06-30 17:50
2006.07.16
Работа с buf:pointer как с массивом char


3-1147685443
yozh_programmer
2006-05-15 13:30
2006.07.16
Could not find database ID 104 (...). Ошибка не в тему


15-1150349099
Layner
2006-06-15 09:24
2006.07.16
Delphi 2006, можно ди вернуться к интерфейсу как у Delphi 7?


9-1131821987
Кефир87
2005-11-12 21:59
2006.07.16
gluProject вызывает Run time error?!


2-1151321009
bulavkin
2006-06-26 15:23
2006.07.16
DelphiX D7 --- Undeclared identifier: TBackgroudSprite