57 lines
1.4 KiB
SQL
Executable File
57 lines
1.4 KiB
SQL
Executable File
-- replace several strings at once (useful for processing text templates such as emails or web pages)
|
|
|
|
select string_util_pkg.multi_replace ('this is my #COLOR# string (not only #COLOR# but also #SIZE#)', t_str_array('#COLOR#', '#SIZE#'), t_str_array('green', 'great'))
|
|
from dual
|
|
|
|
-- split string into rows
|
|
|
|
select *
|
|
from table(string_util_pkg.split_str ('CLOSED,IN PROGRESS,REJECTED', ','))
|
|
|
|
-- useful for variable IN clauses
|
|
|
|
select *
|
|
from emp
|
|
where ename in (select column_value
|
|
from table(string_util_pkg.split_str ('SMITH,ADAMS,JAMES', ',')))
|
|
|
|
|
|
-- join together many rows into one string (SQL query)
|
|
|
|
select string_util_pkg.join_str(cursor(select ename from emp order by ename))
|
|
from dual
|
|
|
|
-- join together many rows into one string (PL/SQL)
|
|
|
|
declare
|
|
l_val varchar2(32000);
|
|
l_cursor sys_refcursor;
|
|
begin
|
|
open l_cursor for select ename from emp order by ename;
|
|
l_val := string_util_pkg.join_str(l_cursor);
|
|
dbms_output.put_line(l_val);
|
|
end;
|
|
|
|
|
|
-- randomize array of strings
|
|
|
|
declare
|
|
l_test1 t_str_array ('one', 'two', 'three', 'four');
|
|
begin
|
|
|
|
debug_pkg.debug_on;
|
|
|
|
for i in l_test1.first .. l_test1.last loop
|
|
debug_pkg.printf('%1 = %2', i, l_test1(i));
|
|
end loop;
|
|
|
|
l_test1 := randomize_array (l_test1);
|
|
|
|
for i in l_test1.first .. l_test1.last loop
|
|
debug_pkg.printf('%1 = %2', i, l_test1(i));
|
|
end loop;
|
|
|
|
end;
|
|
|
|
|