我在pl / sql中报告已创建的问题。我有很多独立的sql,我希望有一个pl / sql查询,它使用数据库中的值为我写一个文本报告。
如何将此sql查询转换为pl / sql:
select a1.name, count(*)
from sin.incident a2, sin.people a1
where a2.assignee = a1.id
and a2.created_date >= (TO_DATE('&date', 'YYYY-MM-DD'))
and a2.parent_problem is NULL
and a1.assignee_group = '10003'
group by cube (a1.name, a2.created_date);
pl / sql查询的结果应为:
本月最好的是......谁创造了......问题
第二个是......谁创造了......问题
...已创建......问题
......创造......问题 。 。
回答: 我只想要从许多sql查询中获得一个pl / sql查询。 没有人的限制,但这里将是2-5人。 我的老板想要在pl / sql中获取它。
答案 0 :(得分:0)
使用游标和游标循环,例如:
PROCEDURE print_data IS
CURSOR my_data IS
select a1.name, count(*) cnt
from sin.incident a2, sin.people a1
where a2.assignee = a1.id
and a2.created_date >= (TO_DATE('&date', 'YYYY-MM-DD'))
and a2.parent_problem is NULL
and a1.assignee_group = '10003'
group by cube (a1.name, a2.created_date);
BEGIN
FOR rec IN my_data LOOP
dbms_output.put_line('Name: ' || rec.name || ' count:' || rec.cnt);
END LOOP;
END;
同时查看this example。如果您使用dbms_output.put_line
,请不要忘记启用输出并设置缓冲区大小(有关详情,请参阅here)。