Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Default-параметры хранимки и обработка EXCEPTION. АСА 11. / 6 сообщений из 6, страница 1 из 1
06.05.2009, 09:54
    #35971053
Redbor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Default-параметры хранимки и обработка EXCEPTION. АСА 11.
Добрый день всем, уважаемые коллеги.

Обнаружил такой баг в 11-ой АСА. Если ХПшка создаётся без DEFAULT-параметров, то в ней можно использовать конструкцию
Код: plaintext
1.
2.
3.
BEGIN
...
EXCEPTION ...
END

Если же у процедуры объявлен хоть один DEFAULT-параметр, то хранимку создать невозможно. Выдаётся сообщение об ошибке из серии "... procedure no longer valid...".
Сервер - 11.0.1.2052, ОС - centos-5.1-i386.
...
Рейтинг: 0 / 0
06.05.2009, 12:44
    #35971631
V.V.L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Default-параметры хранимки и обработка EXCEPTION. АСА 11.
Под виндами работает. Лучше дайте минимально нерабочий пример процедуры.
...
Рейтинг: 0 / 0
06.05.2009, 16:23
    #35972393
Redbor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Default-параметры хранимки и обработка EXCEPTION. АСА 11.
При следующем объявлении процедуры
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE "DBA"."test" (@param int = NULL)
BEGIN 
	BEGIN 
	EXCEPTION 
	WHEN 
		OTHERS THEN MESSAGE 'ОБЛОМС!' TO CLIENT; 
END;
получаем такое сообщение об ошибке:

[Sybase][ODBC Driver][SQL Anywhere]Procedure 'test' is no longer valid SQLCODE: -836 SQLSTATE: 42000 SQL Statement: ALTER PROCEDURE "DBA"."test"( @param int = null ) BEGIN begin select @param; end; exception when others then message 'ОБЛОМС!' to client; END

Если же процу объявить так
Код: plaintext
CREATE PROCEDURE "DBA"."test" (@param int)...
, то всё нормально.
...
Рейтинг: 0 / 0
06.05.2009, 16:42
    #35972466
Redbor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Default-параметры хранимки и обработка EXCEPTION. АСА 11.
Всё, вопрос снят. Я просто по привычке написал на TSQL-е, а не на Ваткоме. Всем спасибо.
...
Рейтинг: 0 / 0
06.05.2009, 16:47
    #35972490
V.V.L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Default-параметры хранимки и обработка EXCEPTION. АСА 11.
А так ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE "DBA"."test"(@param int default NULL)
BEGIN
	BEGIN 
	EXCEPTION 
	WHEN 
		OTHERS THEN MESSAGE 'ОБЛОМС!' TO CLIENT;
  END;
END;
Короче, END-а завершающего нету
...
Рейтинг: 0 / 0
06.05.2009, 17:44
    #35972722
Redbor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Default-параметры хранимки и обработка EXCEPTION. АСА 11.
Если бы не хватало END-а, то и сообщение об ошибке было бы другое, мол, ошибка синтаксиса. А дело было в несовместимости синтаксисов. Я объявлял параметр на TSQL-е, а в теле процы использовал Ваткомовскую конструкцию. А так делать нельзя, ибо сервер, встретив TSQL-ное объявление процы ждал, что и её тело будет тоже на TSQL-е, а там Ватком!
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Default-параметры хранимки и обработка EXCEPTION. АСА 11. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]