Split, Join and DateDiff are just few Oracle functions that can aid you in data manipulation.
Function Definition
Split - split a result by “character specified (by default, comma)”
into multiple results.
e.g. “A,B,C” –> results 3 records of “A”,”B”, and “C”.
Join - join multiple records into one result by
“character specified (by default, comma)”.
e.g. “1″,”2″,”3″ –> results 1 record of “1,2,3″.
DateDiff - Differentiate two dates.
Function Code
create or replace function split(
p_list varchar2,
p_del varchar2 := ','
) return split_tbl pipelined
is
l_idx pls_integer;
l_list varchar2(32767) := p_list;
l_value varchar2(32767);
begin
loop
l_idx := instr(l_list,p_del);
if l_idx > 0 then
pipe row(substr(l_list,1,l_idx-1));
l_list := substr(l_list,l_idx+length(p_del));
else
pipe row(l_list);
exit;
end if;
end loop;
return;
end split;
create or replace function join
(
p_cursor sys_refcursor,
p_del varchar2 := ','
) return varchar2
is
l_value varchar2(32767);
l_result varchar2(32767);
begin
loop
fetch p_cursor into l_value;
exit when p_cursor%notfound;
if l_result is not null then
l_result := l_result || p_del;
end if;
l_result := l_result || l_value;
end loop;
return l_result;
end join;
create or replace function datediff( p_what in varchar2,
p_d1 in date,
p_d2 in date ) return number
as
l_result number;
begin
select (p_d2-p_d1) * decode( upper(p_what), 'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL ) into l_result from dual;
return l_result;
end;
* Note : To use the split and join function, you must execute this code.
create or replace type split_tbl as table of varchar2(32767)
Comments
Post a Comment