Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
2-1151572101
Anubi$$$
2006-06-29 13:08
2006.07.16
глобальный hook


15-1150368553
DillerXX
2006-06-15 14:49
2006.07.16
ftp.exe почему не работает?


2-1151312195
C@N
2006-06-26 12:56
2006.07.16
Как узнать состояние CapsLock и NumLock???


15-1150402399
AKS
2006-06-16 00:13
2006.07.16
вакансия: программист delphi на удаленную работу


4-1144406187
leonidus
2006-04-07 14:36
2006.07.16
Передача в dll строки widestring





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский