Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Oracle declare select into update语句不起作用_Regex_Oracle_Select Into_Regexp Replace - Fatal编程技术网

Regex Oracle declare select into update语句不起作用

Regex Oracle declare select into update语句不起作用,regex,oracle,select-into,regexp-replace,Regex,Oracle,Select Into,Regexp Replace,我向它们发送消息,然后通过从DECLINEREASON t获取选择ascii(substr(declinereasondesc,30,1)) 其中declinereasonid=7我在db字符集中得到了的代码(49827)。然后我尝试更新数据库中的记录 我遇到的问题是数据没有保存到DB或选择进入值到varchar2(6)以某种方式更改了它,但它不再匹配REGEXP\u REPLACE 当我尝试使用varchar2(1)时,它确实出现了错误,这可能是一个提示 declare c varchar2(

我向它们发送消息,然后通过从DECLINEREASON t获取
选择ascii(substr(declinereasondesc,30,1))
其中declinereasonid=7我在db字符集中得到了
的代码(49827)。然后我尝试更新数据库中的记录

我遇到的问题是数据没有保存到DB或
选择进入
值到
varchar2(6)
以某种方式更改了它,但它不再匹配
REGEXP\u 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;

更新:尝试
声明c编号没有错误,但没有更新值。

这是因为我太笨了-忘记在
chr(c)
中包装
c


update
语句中没有
where
子句@ammoQ不需要它,不匹配的regex_replace返回它的输入值。但这仍然意味着update语句仍然影响
DECLINEREASON
中的所有行,这可能会导致不必要的副作用(性能损失、触发器触发、锁定…),即使更新本身没有effect@ammoQ你完全正确
declare c number;
begin 
select ascii(substr(declinereasondesc, 30,1)) into c from DECLINEREASON t
where declinereasonid = 7;
begin 
  update DECLINEREASON set declinereasondesc = REGEXP_REPLACE(declinereasondesc, '(.+)('||chr(c)||')(\d+)', '\1\3 (GBP)');
  commit;
  end;
end;
/
  commit;