2013-03-16 51 views
0

如何使用记录变量检索游标实现中的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。

我想检索每个科室的学生人数。

回答

0

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

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

所有你需要做的是:

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

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

    DBMS_OUTPUT.PUT_LINE(v_branchrec.cnt);