0

我正在报告 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 中得到它。

4

1 回答 1

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;

也看看这个例子。如果您使用,请不要忘记启用输出并设置缓冲区大小dbms_output.put_line(有关更多信息,请参见此处)。

祝你好运!

于 2013-11-13T21:53:48.070 回答