小白请教一个关于游标的列名的问题

我想用游标从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_SALCOUNT_1DEPTNO分别是你在游标定义中使用的sum(sal)count(1)deptno字段的别名。

此外,你也可以通过以下代码来获取游标中每个字段的名称:

FOR c IN c1
LOOP
   DBMS_OUTPUT.PUT_LINE(c1%ROWTYPE);
END LOOP;

在以上代码中,%ROWTYPE提供了一个游标的所有字段名称、类型和长度的列表。