昨天系统导数据库一不小心把nls_language设错了结果导出来的函数和过程里面的中文字符串中的字符都变成问号了(?)
结果业务部门报告好多报表里面的内容都变成问号了这下麻烦了
首要问题是要把有这种问题的函数和过程找出来但是系统中的函数和过程有好多啊将近一千个有人说要大家每个人分几个用眼睛看那可不行啊会累死人的哈哈
想想办法吧记得Oracle的函数和过程每行的文本都是存在一个系统表中的而且有问题的函数和过程会有一个特点就是里面的字符串都变成了???的形式只不过里面的问号的数量不一定
那种形式正好可以让正则表达式发挥作用而且还记得Oracle提供了正则表达式的函数呢
确定了方向之后说干就干查了一下资料所有的函数和过程都存储在User_Source这个表中而Oracle还提供了REGEXP_Like函数
于是就有了下面的SQL
select distinct name type from user_source where REGEXP_LIKE(text \?{})
一下子就把有问题的函数和过程名都找出来了哈哈省了不少功夫啊
总结一下遇到问题的时候不要着急不能依赖手工的工作Oracle中的系统表和内置函数功能很强大要充分利用