做应用时遇到过这么个问题,数据库录入了一些基础数据,有时候可能会把数据库中所有包含“联通”的字符都替换为“电信”,类似这么个功能吧,写了个简单的替换程序,当然如果你不想替换某些表就修改一个替换规则 如果数据比较重要,调用之前最好备份下数据,替
        											做应用时遇到过这么个问题,数据库录入了一些基础数据,有时候可能会把数据库中所有包含“联通”的字符都替换为“电信”,类似这么个功能吧,写了个简单的替换程序,当然如果你不想替换某些表就修改一个替换规则
如果数据比较重要,调用之前最好备份下数据,替换之后不可逆哦    		    			    											oracle 								    		    				    			        		            	            	            	            	            	create or replace procedure str_replace_all(oldstr in varchar2,newstr in varchar2) istable_name  varchar2(45);--表名column_name  varchar2(100);--字段名sql_str varchar2(200);--动态执行的sqltype cur_type is ref cursor;--定义游标类型cursor_columns cur_type;--查询字段游标cursor cursor_tables is--查询表游标  select table_name from user_tables;begin  open cursor_tables;  loop       --遍历所有的数据库表       fetch cursor_tables into table_name;       exit when cursor_tables%notfound;         dbms_output.put_line(table_name);       --遍历当前表所有字符型字段       sql_str := 'select column_name from user_tab_columns where table_name='''||table_name||''' and data_type in (''char'',''varchar2'')';       open cursor_columns for sql_str;       loop         fetch cursor_columns into column_name;         exit when cursor_columns%notfound;         --dbms_output.put_line('---'||column_name);         --替换更新当前字段         sql_str := 'update '||table_name||' set '||column_name||' =replace('||column_name||','''||oldstr||''','''||newstr||''')';         --dbms_output.put_line(sql_str);         execute immediate sql_str;         commit;       end loop;  end loop;end str_replace_all;
   
 
   