Попытка сгенерировать уникальную контрольную сумму для строки данных в таблице Oracle, для использования в целях обеспечения того, чтобы строка не изменялась между двумя пользователями, получающими их, и пыталась обновить их одновременно.
SELECT ora_hash( KY_REFUND_ID CD_STATUS || KY_CHECK_NUM ||
COMMENT || CREATED_BY || TS_CREATED || TX_UPDATED_BY || TS_UPDATED) as checksum
INTO p_checksum
FROM REFUND_CHECKS r
WHERE ROWID = p_rowid;
Странно, мы получаем другую контрольную сумму, если процедура вызывается в sqldeveloper при отладке, в отличие от вызова через веб-сайт.Это становится проблемой, когда контрольная сумма снова вычисляется внутренне для сравнения с моим значением - у меня получено 12345, но внутренне те же самые данные дают 78904, поэтому система говорит, что они не совпадают.
Насколько яКак видите, единственный способ, когда два разных пользователя получают разные контрольные суммы при просмотре одних и тех же данных ... это то, что они не смотрят на одни и те же данные.Я подозреваю, что между этими двумя вызовами есть нечто невидимое.И единственное, что я вижу, это то, что аккаунт используется.
В sqldeveloper вызов выполняется с использованием имени схемы, но веб-сайт вызывает как dotnet_user.
В любом случае имя учетной записи используется в качестве некоторого дополнительного значения в математике, когдаопределение контрольной суммы?Если нет, то какие еще могут быть невидимые различия, которые могут привести к различным результатам, и, что более важно, как они могут быть стандартизированы, чтобы обе стороны получили одинаковый результат?