将SQL(Oracle)转换为PL / SQL

时间:2013-11-13 19:11:57

标签: sql oracle plsql

我在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中获取它。

1 个答案:

答案 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)。

祝你好运!