У меня была проблема, из-за которой из-за кодировки базы данных специальные символы получали странные коды к ним, то, получив select ascii(substr(declinereasondesc, 30,1)) from DECLINEREASON t
where declinereasonid = 7;
, я получил код (49827) для £
в кодировке db. Затем я попытался обновить записи в базе данных.
Проблема, которую я получаю, заключается в том, что данные не сохраняются в БД или значение selecting into
для varchar2(6);
каким-то образом изменяет его, и оно больше не соответствует REGEXP_REPLACE
.
Произошла ошибка, когда я попытался использовать varchar2(1)
, которое должно иметь значение, что может быть подсказкой.
declare c varchar2(6);
begin
select ascii(substr(declinereasondesc, 30,1)) into c from DECLINEREASON t
where declinereasonid = 7;
begin
update DECLINEREASON set declinereasondesc = REGEXP_REPLACE(declinereasondesc, '(.+)('||c||')(\d+)', '\1\3 (GBP)');
commit;
end;
end;
/
commit;
Обновление: пробовал declare c number;
без ошибок, но не обновлял значения эфира
where
в оператореupdate
?!? - person Erich Kitzmueller   schedule 19.11.2014DECLINEREASON
, что может вызвать нежелательные побочные эффекты (снижение производительности, срабатывание триггеров, блокировки...), даже если обновление само по себе не имеет никакого эффекта. - person Erich Kitzmueller   schedule 19.11.2014