Oracle 检查循环plsql中的最后一行

Oracle 检查循环plsql中的最后一行,oracle,plsql,Oracle,Plsql,我在plsql中为学生和系使用FOR循环,并将系名存储在日志表中,以逗号分隔,但在最后一个系名之后,我得到了额外的“,”如何删除它 For i IN (select (DEPT_NAME) DeptName FROM TBL_DEPT WHERE PREV_DEPT_NAME = lPrevDeptName) LOOP lNewDept := lNewDept || i.DeptName || ','; ... ..... .... END LOOP; 最后我用新的deptname更新

我在plsql中为学生和系使用FOR循环,并将系名存储在日志表中,以逗号分隔,但在最后一个系名之后,我得到了额外的“,”如何删除它

For i IN
 (select (DEPT_NAME) DeptName FROM TBL_DEPT WHERE PREV_DEPT_NAME = 
lPrevDeptName)
LOOP
 lNewDept := lNewDept || i.DeptName || ',';

...
.....
....
END LOOP;
最后我用新的deptname更新了日志表,但我得到的结果是“IT,HR,Accounts”,在日志表中,想删除额外的“after Accounts”

RTRIM
IT:

lNewDept := rtrim(lNewDept, ',');
例如:

SQL> with test (lNewDept) as (select 'IT,HR,Accounts,' from dual)
  2  select rtrim(lNewDept, ',') result
  3  from test;

RESULT
--------------
IT,HR,Accounts

SQL>
或者像这样:

For i IN
 (select (DEPT_NAME) DeptName FROM TBL_DEPT WHERE PREV_DEPT_NAME = 
lPrevDeptName)
LOOP

 if lNewDept is null then
   lNewDept := i.DeptName
 else
   lNewDept := lNewDept || ',' ||i.DeptName;
 end if;

...
.....
....
END LOOP;