Главная страница
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.043 c
2-1151514986
NORDmen
2006-06-28 21:16
2006.07.16
Поток в созаднном мной классе


15-1150208840
SergProger
2006-06-13 18:27
2006.07.16
Строка в PHP


1-1149500016
Kolan
2006-06-05 13:33
2006.07.16
Как использовать только часть массива?


15-1150640191
***(H@kker)***
2006-06-18 18:16
2006.07.16
Windows SDK и MSDN


3-1147432339
Ломброзо
2006-05-12 15:12
2006.07.16
Битовые операции в Oracle