set serveroutput on;declare-- these combinations work under ANSI, at leasta_comb nvarchar2(50) := unistr('/0300/0301/0302/0303/0308/ 030A ');c_comb nvarchar2(50) := unistr('/0327');e_comb nvarchar2(50) := unistr('/0300/0301/0302/0308');i_comb nvarchar2(50) := unistr('/0300/0301/0308');n_comb nvarchar2(50) := unistr('/0303');o_comb nvarchar2(50) := unistr('/0300/0301/0302/0303/0308');u_comb nvarchar2(50) := unistr('/0300/0301/0302/0308');y_comb nvarchar2(50) := unistr('/0301/0308');l_idx integer;l_ename nvarchar2(50);ch nchar;l_junk varchar2(50);begindbms_random.initialize(to_char(sysdate,'SSSSS'));for row in (select ename from emp) loopl_ename := row.ename;l_junk := null;for i in 1..length(l_ename) loopch := substr(l_ename,i,1);case lower(ch)when 'a' thenl_junk := l_junk compose(ch substr(a_comb,mod(abs(dbms_random.random),length(a_comb)) + 1,1));when 'c' thenl_junk := l_junk compose(ch substr(c_comb,mod(abs(dbms_random.random),length(c_comb)) + 1,1));when 'e' thenl_junk := l_junk compose(ch substr(e_comb,mod(abs(dbms_random.random),length(e_comb)) + 1,1));when 'i' thenl_junk := l_junk compose(ch substr(i_comb,mod(abs(dbms_random.random),length(i_comb)) + 1,1));when 'n' thenl_junk := l_junk compose(ch substr(n_comb,mod(abs(dbms_random.random),length(n_comb)) + 1,1));when 'o' thenl_junk := l_junk compose(ch substr(o_comb,mod(abs(dbms_random.random),length(o_comb)) + 1,1));when 'u' thenl_junk := l_junk compose(ch substr(u_comb,mod(abs(dbms_random.random),length(u_comb)) + 1,1));when 'y' thenl_junk := l_junk compose(ch substr(y_comb,mod(abs(dbms_random.random),length(y_comb)) + 1,1));elsel_junk := l_junk ch;end case;end loop;dbms_output.put_line(to_char(l_junk));end loop;end;/show errors; |