PL/SQL函数和regexp\u替换
我应该如何处理事件描述中的符号(&a) -我的名字是XYZ,电话号码是123456。 -我们无法编辑事件描述PL/SQL函数和regexp\u替换,sql,oracle,plsql,Sql,Oracle,Plsql,我应该如何处理事件描述中的符号(&a) -我的名字是XYZ,电话号码是123456。 -我们无法编辑事件描述 比如“我的名字是XYZ”和“我的电话号码是123456”。Net请确定你在问什么。您的函数正在使用列和变量值,它将不关心符号。问题事件描述从何而来?您是否在询问如何将该值放入表中,或者如何使用该测试值作为可选值从SQL*Plus调用您的函数?“无法编辑”部分表明它将真正来自一个表,我认为,但这并不清楚。无论哪种方式,如果使用字符串文本运行特殊查询,则可以编辑该值。但是这很痛苦,所以为什么
比如“我的名字是XYZ”和“我的电话号码是123456”。Net请确定你在问什么。您的函数正在使用列和变量值,它将不关心符号。问题事件描述从何而来?您是否在询问如何将该值放入表中,或者如何使用该测试值作为可选值从SQL*Plus调用您的函数?“无法编辑”部分表明它将真正来自一个表,我认为,但这并不清楚。无论哪种方式,如果使用字符串文本运行特殊查询,则可以编辑该值。但是这很痛苦,所以为什么不使用set define off来代替呢,就像我链接到的答案一样?@AlexPoole取出这个事件描述:=regexp\u replaceout\u event\u desc,c\u pattern,c\u mask;选择regexp_替换“我的名字是xyz,我的号码是1234”,“0-9][0-9][0-9][0-9]”,从dual中选择out_event_desc;当in_event_desc是一个描述如下的列时,它将不会运行this@alex但是查询是在函数中使用的,函数是在过程中调用的,那么该做什么,符号不是由函数或过程解释的。PL/SQL不知道替换变量。您的客户机在脚本中看到了符号and,并将其视为替换变量,然后才编译具有字符串文字的过程,然后再调用它。设置验证并查看实际执行的内容。然后设置“定义”并重试。
--Function to match multiple pattern and replace it with its particular mask.
create or replace function masking(in_event_desc in varchar2)
return varchar2
as
c_pattern other_table.pattern%type;
c_mask other_table.mask%type;
out_event_desc varchar2(4000) := in_event_desc;
--desc is like my name is XYZ and my phone no is 123456 and CC no is 789456.
cursor val is select pattern,mask from other_table;
--selects pattern like [0-9][0-9][0-9][0-9] and mask like #### plus all other various kind of patterns and their mask.
begin
open val;
loop
fetch val into c_pattern,c_mask;
exit when val%NOTFOUND;
out_event_desc := regexp_replace(out_event_desc,c_pattern,c_mask);
end loop;
close val;
return out_event_desc;
end;