Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
PL/SQL函数和regexp\u替换_Sql_Oracle_Plsql - Fatal编程技术网

PL/SQL函数和regexp\u替换

PL/SQL函数和regexp\u替换,sql,oracle,plsql,Sql,Oracle,Plsql,我应该如何处理事件描述中的符号(&a) -我的名字是XYZ,电话号码是123456。 -我们无法编辑事件描述 比如“我的名字是XYZ”和“我的电话号码是123456”。Net请确定你在问什么。您的函数正在使用列和变量值,它将不关心符号。问题事件描述从何而来?您是否在询问如何将该值放入表中,或者如何使用该测试值作为可选值从SQL*Plus调用您的函数?“无法编辑”部分表明它将真正来自一个表,我认为,但这并不清楚。无论哪种方式,如果使用字符串文本运行特殊查询,则可以编辑该值。但是这很痛苦,所以为什么

我应该如何处理事件描述中的符号(&a) -我的名字是XYZ,电话号码是123456。 -我们无法编辑事件描述
比如“我的名字是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;