Могу я спросить, как правильно сделать вложенный курсор в sybase? Я получаю две ошибки в моем коде ниже.
- Необходимо объявить переменную @notes
- Объявление курсора должно быть единственным оператором в пакете запросов.
Текущая попытка кодирования:
DECLARE c3 cursor FOR
select distinct cust_ac_no from tempdb..M3_SHP_ACCOUNT_NOTES
where cust_ac_no in ('851243048')
--,'851261620
--order by cust_ac_no, inst_seq_no, ord_no, ref_no, acv_no
GO
DECLARE
@exec_str1 varchar(8000),
@exec_str2 varchar(8000),
@cust_ac_no varchar(10),
@c_ac varchar(10),
@notes varchar(4000),
@notes2 varchar(8000)
--select @exec_str1 = "select distinct notes from tempdb..M3_SHP_ACCOUNT_NOTES where cust_ac_no = "
OPEN c3
FETCH c3 into @cust_ac_no
WHILE @@sqlstatus = 0
BEGIN
DECLARE c2 cursor FOR
select distinct notes from tempdb..M3_SHP_ACCOUNT_NOTES
where cust_ac_no = + "'" + @cust_ac_no + "'"
order by cust_ac_no, inst_seq_no, ord_no, ref_no, acv_no
GO
OPEN c2
FETCH c2 into @notes
WHILE @@sqlstatus = 0
BEGIN
print @notes
FETCH c2 into @notes
END
CLOSE c2
DEALLOCATE c2
print @cust_ac_no
FETCH c3 into @cust_ac_no
END
CLOSE c3
DEALLOCATE c3
M3_SHP_ACCOUNT_NOTES
с временной таблицей, и во время выполнения вы будете усекать/повторно заполнять временную таблицу перед каждымopen C2
; если у вас есть разрешения на создание хранимой процедуры, вы можете поместите весь свой код (оба курсора, ссылки @variable в курсорах) в один хранимый процесс (например, создайте процесс, выполните процесс, удалите процесс) - person markp-fuso   schedule 11.07.2019