我想用游标从emp表中统计出每个部门的总公司和总人数以及部门名称
然后我是这样写的:
游标定义部分是:cursor c1 is select sum(sal),count(1),deptno from emp group by deptno;
但是后面用for循环来取的时候发现要取值的话,我必须知道游标c1中的列名。请问大佬们这种情况下要怎么解决?是不是我一开始的思路其实就是有问题的?
首先,你的游标定义是正确的。
但是,在使用游标时,可以通过以下代码来获取游标中的每个字段的名称:
FOR c IN c1
LOOP
DBMS_OUTPUT.PUT_LINE('Sum(sal): ' || c.SUM_SAL || ', Count(1): ' || c.COUNT_1 || ', Deptno: ' || c.DEPTNO);
END LOOP;
在以上代码中,SUM_SAL
、COUNT_1
和DEPTNO
分别是你在游标定义中使用的sum(sal)
、count(1)
和deptno
字段的别名。
此外,你也可以通过以下代码来获取游标中每个字段的名称:
FOR c IN c1
LOOP
DBMS_OUTPUT.PUT_LINE(c1%ROWTYPE);
END LOOP;
在以上代码中,%ROWTYPE
提供了一个游标的所有字段名称、类型和长度的列表。