Как указывает Митч, синтаксис выборки:
fetch cursor_name [into fetch_target_list]
Вам также необходимо объявить курсор в отдельном пакете, это означает, что вы должны поставить «GO» после оператора объявления. Затем вы обнаружите, что ваша переменная выпадает из области видимости, поэтому вам нужно переместить ее так, чтобы она шла после «GO».
Вам также нужно проверить @@ sqlstatus, чтобы увидеть, насколько успешной была выборка, а не @@ FETCH_STATUS, которая, я думаю, только MSSQL.
DECLARE my_cursor CURSOR FOR
SELECT name
FROM sysobjects
WHERE type = 'U'
go
DECLARE @tableName VARCHAR(500)
set nocount on
OPEN my_cursor
FETCH my_cursor INTO @tableName
WHILE @@sqlstatus = 0
BEGIN
--Do something here
FETCH my_cursor INTO @tableName
print @tablename
END
CLOSE my_cursor
DEALLOCATE CURSOR my_cursor
И в конце строки в Sybase ASE не нужно использовать точки с запятой.