Я пишу хранимую процедуру для базы данных Sybase. Я использую Sybase Central 16.0 в качестве среды разработки. Машина, на которой я работаю, работает под управлением Microsoft Windows Server 2012 R2 Standard и имеет 16 ГБ ОЗУ на процессоре 2,8 ГГц.
Моя хранимая процедура использует курсор для перебора записей в таблице с примерно 400 000 записей. Каждая запись записывается пошагово в переменную LONG VARCHAR
, и каждая N-я запись proc запускает хеш-значение MD5 для переменной и сохраняет значение в отдельной таблице.
TABLE_NAME, DATE_TIME_RAN, FROM_RECORD, TO_RECORD, HASH_VALUE
Если я запускаю только хранимую процедуру для хеширования этой таблицы как блока SQL в SQL Anywhere (например, BEGIN ... <hash the table here> ... END;
), она проходит через все записи и успешно завершается в течение двух минут. Однако, если я запускаю эту хранимую процедуру как встроенную команду в другой хранимой процедуре (например, CALL <MY_SCHEMA>.<MY_STORED_PROCEDURE>
), она никогда не завершается.
Почему выполнение хранимой процедуры (в том же наборе данных) из другой хранимой процедуры выполняется по-другому?