Представьте себе сцену, вы обновляете какой-то унаследованный код Sybase и натолкнетесь на курсор. Хранимая процедура создает результирующий набор в таблице #tevent, которая готова к возврату, за исключением того, что один из столбцов не очень удобен для чтения, это буквенно-цифровой код.
Что нам нужно сделать, так это выяснить возможные различные значения этого кода, вызвать другую хранимую процедуру для перекрестной ссылки на эти дискретные значения и затем обновить результирующий набор новыми расшифрованными значениями:
declare c_lookup_codes for
select distinct lookup_code
from #workinprogress
while(1=1)
begin
fetch c_lookup_codes into @lookup_code
if @@sqlstatus<>0
begin
break
end
exec proc_code_xref @lookup_code @xref_code OUTPUT
update #workinprogress
set xref = @xref_code
where lookup_code = @lookup_code
end
Теперь, хотя это может вызвать у некоторых сердцебиение, оно работает. Мой вопрос: как лучше всего избегать такого рода вещей?
_NB: для целей этого примера вы также можете представить, что набор результатов находится в области 500 000 строк и что существует 100 различных значений look_up_code и, наконец, что невозможно получить таблицу с внешней ссылкой значения в качестве логики в proc_code_xref слишком загадочны ._