alexandria-plsql-utils/demos/string_util_pkg_demo.sql
2015-02-20 19:43:42 +01:00

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;