现在的位置: 首页 > 综合 > 正文

用regexp_replace去注释

2013年10月06日 ⁄ 综合 ⁄ 共 764字 ⁄ 字号 评论关闭

with t1 as
 (select '/*-/-*-/*-*-*/a/*哈哈**-*/b/*嘿嘿*/c' as v1 from dual)
select v1,
       regexp_replace(v1, '\/\*.+\*\/', '') as v2,
       regexp_replace(v1, '\/\*[^*/]+\*\/', '') as v2,
       regexp_replace(v1, '\/\*([^*]/|[^/])+\*\/', '') as v4
  from t1

去掉视图里的注释

declare
  viewName  VARCHAR2(50);
  viewSql   LONG;
  oldStr    VARCHAR(1000);
  newStr    VARCHAR(1000);
begin
  /*提取现视图语句*/
  for cur in(select TEXT,VIEW_NAME INTO viewSql,viewName FROM USER_VIEWS) loop
    viewSql := cur.text;
    viewName := cur.VIEW_NAME;
    viewSql := 'CREATE OR REPLACE VIEW ' || viewName || ' AS ' || viewSql;
    /*规范格式*/
    oldStr  := ' ' || CHR(10);
    newStr  := CHR(10);
    viewSql := REPLACE(viewSql, oldStr, newStr);
    viewSql := regexp_replace(v1, '\/\*([^*]/|[^/])+\*\/', '');
    viewSql := REGEXP_REPLACE(viewSql, '--.+' || chr(10),chr(10));
    EXECUTE IMMEDIATE viewSql;
  end loop;
  exception
    when others then
      dbms_output.put_line(viewName);
END;

抱歉!评论已关闭.