17,380
社区成员
发帖
与我相关
我的任务
分享SQL> declare
2 v_ch varchar2(100);
3 cv_1 sys_refcursor;
4 begin
5 open cv_1 for select wm_concat(distinct substr(t.ename,1,1)) name from emp t;
6 loop
7 fetch cv_1 into v_ch;
8 exit when cv_1%notfound;
9 dbms_output.put_line(v_ch);
10 end loop;
11 end;
12 /
declare
v_ch varchar2(100);
cv_1 sys_refcursor;
begin
open cv_1 for select wm_concat(distinct substr(t.ename,1,1)) name from emp t;
loop
fetch cv_1 into v_ch;
exit when cv_1%notfound;
dbms_output.put_line(v_ch);
end loop;
end;
ORA-06550: 第 6 行, 第 22 列:
PL/SQL: ORA-30482: DISTINCT 选项在此函数中禁用
ORA-06550: 第 6 行, 第 15 列:
PL/SQL: SQL Statement ignored
SQL> set serveroutput on
SQL>
SQL> declare
2 v_ch varchar2(100);
3 v_num number;
4 cv_1 sys_refcursor;
5 begin
6 open cv_1 for select deptno, wm_concat(substr(t.ename,1,1)) name from (select distinct deptno,ename from emp) t group by deptno;
7 loop
8 fetch cv_1 into v_num, v_ch;
9 exit when cv_1%notfound;
10 dbms_output.put_line(v_num||' '||v_ch);
11 end loop;
12 end;
13 /
10 K,M,C
20 J,F,A,S,S
30 W,B,J,T,A,M
PL/SQL procedure successfully completed
SQL> SQL> select wm_concat(distinct substr(t.ename,1,1)) from emp t
2 group by deptno
3 union all
4 select wm_concat(substr(t.ename,1,1)) from emp t
5 group by deptno;
WM_CONCAT(DISTINCTSUBSTR(T.ENA
--------------------------------------------------------------------------------
C,K,M
A,F,J,S
A,B,J,M,T,W
C,K,M
S,F,A,S,J
A,B,M,T,J,W
6 rows selected
SQL> SQL> select wm_concat(distinct substr(t.ename,1,1)) from emp t
2 group by deptno
3 union all
4 select wm_concat(substr(t.ename,1,1)) from emp t
5 group by deptno;
WM_CONCAT(DISTINCTSUBSTR(T.ENA
--------------------------------------------------------------------------------
C,K,M
A,F,J,S
A,B,J,M,T,W
C,K,M
S,F,A,S,J
A,B,M,T,J,W
6 rows selected
SQL>