从游标打印聚合函数的结果

时间:2013-03-16 20:58:08

标签: oracle plsql

如何使用记录变量检索游标实现中的count值?

DECLARE 

   CURSOR cur_branch IS
    SELECT b.branchname, COUNT(a.applicantid) 
      FROM branch b, applicant a
     WHERE b.branchid=a.optedbranch
     GROUP BY b.branchname ORDER BY b.branchname;

BEGIN

   DBMS_OUTPUT.PUT_LINE('Branch Name No of Applicants opted');

   FOR v_branchrec IN cur_branch
   LOOP

      DBMS_OUTPUT.PUT(RPAD(v_branchrec.branchname,20)||'    '); 
      DBMS_OUTPUT.PUT_LINE(v_branchrec.COUNT(applicantid));

   END LOOP;

END;

这会在DBMS_OUTPUT.PUT_LINE(v_branchrec.COUNT(applicantid));处抛出一个错误,指出必须声明COUNT并且它只能在SQL中使用,而不能在PL / SQL中使用。

我想检索每个分馆的学生人数。

2 个答案:

答案 0 :(得分:0)

您应该为COUNT(a.applicantid)定义别名,并通过此别名引用此列。

 SELECT b.branchname, COUNT(a.applicantid) cnt FROM
...
 DBMS_OUTPUT.PUT_LINE(v_branchrec.cnt);

答案 1 :(得分:0)

您需要做的就是:

  1. 在游标定义中使用COUNT(a.applicantid)列的别名:

      SELECT b.branchname, COUNT(a.applicantid) as cnt
    
  2. LOOP使用

      DBMS_OUTPUT.PUT_LINE(v_branchrec.cnt);