powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / В ASA 8.0.3.5002 не работает GOTO это правда?
13 сообщений из 13, страница 1 из 1
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32959531
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Вот столкнулся с маленькой проблемой может кно нибудь подскажет
как можно обойти без капитального переписывания кода Хранимых Процедур....
Код ХП был написан на ASE и уже давно и долго работал, а при переносе на ASA 8.0.3.5002 возникли проблемы....

Сори Conntr + Enter нажал

Например такая: "ASA -262: Метка 'metka_cycle' не найдена....

ALTER PROCEDURE dba ."test"
AS
BEGIN
declare @aa int

SELECT @aa = 1

IF @aa = 0
BEGIN

metka_cycle:
SELECT 1
END
ELSE
BEGIN
SELECT @aa = 0

GOTO metka_cycle
SELECT 2


END
SELECT 3

END

А как же полная совместимость ASE и ASA ?
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32959568
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadgerВсем привет.
Вот столкнулся с маленькой проблемой может кно нибудь подскажет
как можно обойти без капитального переписывания кода Хранимых Процедур....
Оставаться на ASE.

Код ХП был написан на ASE и уже давно и долго работал, а при переносе на ASA 8.0.3.5002 возникли проблемы....

Сори Conntr + Enter нажал

Например такая: "ASA -262: Метка 'metka_cycle' не найдена....

ALTER PROCEDURE dba ."test"
AS
BEGIN
declare @aa int

SELECT @aa = 1

IF @aa = 0
BEGIN

metka_cycle:
SELECT 1
END
ELSE
BEGIN
SELECT @aa = 0

GOTO metka_cycle
(*)
SELECT 2


END
(**)
SELECT 3

END
Поэкспериментировал на скорую руку - похоже, всё зависит от того, в каком из блоков begin...end объявлена метка (если её перенести в то место, которое я обозначил (*) или (**), всё работает нормально). Посмотрим, что скажут гуру TSQL ;).

А как же полная совместимость ASE и ASA ?
Это разные продукты. Какую бы лапшу тебе на уши не вешали.
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32959748
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
Поэкспериментировал на скорую руку - похоже, всё зависит от того, в каком из блоков begin...end объявлена метка (если её перенести в то место, которое я обозначил (*) или (**), всё работает нормально). Посмотрим, что скажут гуру TSQL ;).
Да, это видимость переменных в чистом виде. Вот, например открываем BOL на команду GOTO и модифицируем тамошний пример. Вот так работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin
   declare @count smallint
   select @count =  1 
restart:
   message 'yes' to client
   begin
      select @count = @count +  1 
      while @count <= 4 
         goto restart
   end
end; 

А вот так, уже не может найти метку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
begin
   declare @count smallint
   select @count =  1 

   begin
restart:
      message 'yes' to client
   end

   begin
      select @count = @count +  1 
      while @count <= 4 
         goto restart
   end
end; 
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32959758
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так вот, тоже работает :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
begin
   declare @count smallint

   begin
      select @count =  1 
restart:
      message 'yes' to client
      select @count = @count +  1 
      while @count <= 4 
         goto restart
   end

   begin
      select @count =  1 
restart:
      message 'no' to client
      select @count = @count +  1 
      while @count <= 3 
         goto restart
   end
end;
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32960935
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо за участи в обсуждении.

Стало понятно, что ASA это совсем не ASE в части TSQL как бы это декларируется.

И мне кажется, что GOTO это не последнее отличие :)
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961128
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще курсоры, список системных хранимых процедур, список глобальных переменных, набор команд SET, DBCC и т. д.

Писать T-SQL compatible код сложно, но можно.
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961133
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вообще GOTO, это же лженаучно? :)
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961233
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michaelА зачем вообще GOTO, это же лженаучно? :)

Две причины, зачем это нужно :)

1. Это было написано давно, работало без ошибок, а переписывать много,
но ASA же мобильнее...

2. В первом примере была описана ситуация когда нужно прыгнуть из одного
блока в другой. А как это сделать, если бывает сложная логика обработки
данных тербующая многократного анализа в разных блоках begin .... end
и вложить их один в другой просто не реально. :) как в первом примере:
IF @aa = 0 BEGIN .... END ELSE BEGIN .... END - это минимальная сложность.
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961298
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может проще на MS SQL, он на ASE более похож и более мобилен.

Да простит мне эту фразу модератор :)
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961499
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michaelА может проще на MS SQL, он на ASE более похож и более мобилен.

Идея хорошая. В MS SQL c GOTO проблем нету, правда, курсоры пишутся в
T-SQL немного подругому. Да и инсталлировать ее из InstallShield вместе со
своей программой я не умею.... Может, кто научит, что и куда нужно прописать
- чтобы сервер без перезапуска комрьютера стартанул?
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961555
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_ пишет:
> А может проще на MS SQL, он на ASE более похож и более мобилен.

А в чем MSSQL более мобилен, чем ASA?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32961754
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Badger
2. В первом примере была описана ситуация когда нужно прыгнуть из одного
блока в другой.
А зачем прыгать из одного блока в другой? Можно ж просто убрать begin/end скобки и получить один большой блок. Или ставить метки перед началом блока, а не внутри.
И вообще, использовать GOTO это неприлично. :)
...
Рейтинг: 0 / 0
В ASA 8.0.3.5002 не работает GOTO это правда?
    #32962400
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун
michael_ пишет:
> А может проще на MS SQL, он на ASE более похож и более мобилен.

А в чем MSSQL более мобилен, чем ASA?
Posted via ActualForum NNTP Server 1.1

Вы не поняли мою мысль. MS SQL мобильнее, чем ASE.

А ASA мобильнее, чем MS SQL. :)

Под мобильностью я понимаю
1. работу на клиентских ОС (Win 98)
2. легкость инсталяции
3. работу без обслуживания специалиста-администратора
4. наличие встроенной репликации.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / В ASA 8.0.3.5002 не работает GOTO это правда?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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