powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
5 сообщений из 5, страница 1 из 1
Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
    #32216353
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, Erwin 3.52 / 4.х + Sybase SQL Anywhere 5.x/8.x

Создаем в физической модели любую таблицу, привязываем к ней вот такой шаблон хранимой процедуры:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Create Procedure %TemplateName as
BEGIN
  Declare @a int

  Select @a = user_id()

  if @a <  10  BEGIN
    Select @a = @a +  20 
    print @a
  END

  Select temp = @a
END


и просим Erwin сгенерить текст этой процедуры в Sybase SQL AnyWhere.
Вот что лицезреем в окне генерации:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Create Procedure test_proc as
BEGIN
  Declare @a int

  Select @a = user_id()

  if @a < 10  BEGIN
    Select @a = @a +  20 
    print @a
  END

[Sybase][ODBC Driver]Syntax error: syntax error near '(end of line)'
Execution Failed!


  Select temp = @a
END


[Sybase][ODBC Driver]Syntax error: near 'END' in ...[END] ...
Execution Failed!

Schema Generation Complete
 2  queries failed.  


Причем если убрать IF, то все прекрасно.

Проверялось на Sybase 5.5, 6.04, 7.03, 8.01
Подключение было как к Sybase SQL AnyWhere, так и как ODBC Generic, в последнем случае ругательство чуть-чуть отличалось.

Текст процедуры, сгенеренный через ISQL/Access отработал на ура, и процедура даже выполнялась :o)))!
При подключении к MSSQL тоже было все прекрасно.

Т.е. глютит именно связка Erwin - Sybase SQL Anywhere

Кто чем может помочь?
...
Рейтинг: 0 / 0
Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
    #32216398
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы уверены в своем синтаксисе?

Может быть тело процедуры должно быть таким?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
begin
  declare @a integer;
  set @a=user_id();
  if @a <  10  then
    set @a=@a+ 20 ;
    print @a
  end if
end
...
Рейтинг: 0 / 0
Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
    #32216510
Zmiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
begin

declare @a integer;

set @a=user_id();

if @a < 10 then

set @a=@a+20;

print @a

end if // этого не надо, тогда ошибки не будет
end

Вот так вот надо
begin
declare @a integer;
set @a=user_id();
if @a < 10 then
set @a=@a+20;
print @a
end
...
Рейтинг: 0 / 0
Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
    #32216519
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синтаксис верный, т.е. все правильно согласно документации по T-SQL.
Если этот текст вызвать из ISQL, то как я уже и раньше говорил, ASA его воспримет.
Из Erwin 2.5 (еще 16-битного) все генерится нормально, но там нет поддержки ModelMart, т.е. сетевой работы.


Код: plaintext
1.
2.
3.
4.
set @a=user_id();
if @a <  10  then
  set @a=@a+ 20 ;
  print @a
end if

Это Watcom диалект, а все пишется на Transact-SQL, для совместимости с ASE и MSSQL.
...
Рейтинг: 0 / 0
Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
    #32216530
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Zmiter

Вопрос на засыпку:
- Синтаксис-то работоспособный?
- В Sybase central проверяли?

PS. Мой вариант проверена на ASA 8.0.2, Sybase Central 4.1.1.1380
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Глюки при генерации процедур в ASA5.x-8.x из Erwin'а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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