您的位置:首页 > 其它

本人工作中涉及到的运行日志存储过程

2018-03-12 14:30 330 查看
create or replace package body R5_YXRZ_DATE_SHOW_PKG is

-- 通过日志定义ID,得到当前日志数据的查询SQL
function getYXRZQuerySql(l_rz_id number) return varchar2 is
l_sql         varchar2(4000);
l_row_des     varchar2(1000);
l_len         number;
l_len_item    number;
l_item        varchar2(4000) := ',';
l_order       varchar2(100);
l_i           number := 0;
l_item_as     varchar2(4000) := ',';
l_len_item_as number;
begin
for i in (select *
from r5_yxrz_defin_line l
where l.rz_id = l_rz_id
order by l.rzl_id) loop
--判断是否有日期字段
if i.rzl_item = '日期' then
l_row_des := l_row_des || '''' || i.rzl_item || ''' field_rq,';
l_item    := l_item || ' field_rq ' || '"''' || i.rzl_item || '''",';
--判断是否有日志时间字段
elsif i.rzl_item = '日志时间' then
l_row_des := l_row_des || '''' || i.rzl_item || ''' field_rq,';
l_item    := l_item || ' field_rq ' || '"''' || i.rzl_item || '''",';
--如果有日期字段的话则将排序的字符串改成按照日期排序
if l_order is null then
l_order := 'order by rq_order';
l_item_as := l_item_as ||
' field_rq,field_rq rq_order,';
end if;
else
l_item_as := l_item_as || ' field_' || l_i || ',';
l_row_des := l_row_des || '''' || i.rzl_item || ''' field_' || l_i || ',';
l_item    := l_item || ' field_' || l_i || ' "''' || i.rzl_item || '''",';
end if;
l_i := l_i + 1;
end loop;
select length(l_row_des) into l_len from dual;
select length(l_item) into l_len_item from dual;
select length(l_item_as) into l_len_item_as from dual;
l_row_des := substr(l_row_des, 1, l_len - 1);
l_item    := substr(l_item, 1, l_len_item - 1);
l_item_as := substr(l_item_as, 1, l_len_item_as - 1);
l_sql := 'select RE_ID,
rz_id,
group_line_id' || l_item || '
from (select RE_ID,
rz_id,
group_line_id' || l_item_as || '
from (select dl.RE_ID,
dl.rz_id,
dl.rzl_item,
dl.group_line_id,
dl.data_content
from R5_YXRZ_data_v dl
where rz_id = ' || l_rz_id || ')
pivot(max(data_content)
for rzl_item in(' || l_row_des || '))) ' || l_order;

return l_sql;
end;

end R5_YXRZ_DATE_SHOW_PKG;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: