powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase declare cursor
3 сообщений из 3, страница 1 из 1
Sybase declare cursor
    #32065311
runner4501
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните мне, почему DECLARE CURSOR must be the only statement in the batch. Я не могу с этим смириться. Что, для каждого случая создавать процедуру? или как?
Пример: надо удалить для всех подразделений(таблица tDep, поле DepId) всех работников(таблица tStaff, поля StaffId, DepId). Удаление производится процедурой Staff_Del(StaffId). Хочу, чтобы это выглядело так:

declare DepCursor cursor for select DepId from tDep
go
declare @DepId dsIdentifier, @StaffId dsIdentifier
open DepCursor
fetch DepCursor into @SecId

go
while (@@sqlstatus = 0)
begin
declare StaffCursor cursor for
select StaffId from tStaff where DepId = @DepId
go --???
open StaffCursor
fetch StaffCursor into @StaffId
while (@@sqlstatus = 0)
begin
execute Staff_Del @StaffId
fetch StaffCursor into @StaffId
end
close StaffCursor
deallocate cursor StaffCursor

fetch DepCursor into @DepId
end
close DepCursor
deallocate cursor DepCursor

Хочется все это запихнуть в TQuery, но ведь не работает.. Заводить несколько Query не хочется, так как на самом деле запрос сложнее, чем пример, да и вопрос уже принципиальный.
А запускать isql - кажется, тоже не пройдет, как он будет цикл разбивать на отдельные batch (go)?
Что делать?
...
Рейтинг: 0 / 0
Sybase declare cursor
    #32065462
Maxim Pugach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с ентим просто бороться
нужно просто придерживаться следующего правила:)

declare c cursor for ....
go --!!!!!!!!!!!!!!!
(объявление всех переменных и тому подобное)
open c
----------
close c
deallocate cursor c

и все, никаких процедур
go используеться только один раз для объявления глобальной переменной)
...
Рейтинг: 0 / 0
Sybase declare cursor
    #32065484
runner4501
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже если курсор, в смысле, запрос зависит от переменной?
declare StaffCursor cursor for
select StaffId from tStaff where DepId = @DepId
Бежим по одной таблице и в зависимости от записи формируем запрос из другой таблицы.
А Query вообще go за человека не считает... ругается.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase declare cursor
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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