【发布时间】:2019-07-11 01:24:57
【问题描述】:
此查询返回我想要的(查询中的逗号分隔值)
SELECT emp_id, LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)
FROM employee_list
WHERE emp_id = 123456
GROUP BY emp_id;
结果:
Squash,Tennis,Walking
初始数据:
emp_id hobbies
-------------------
123456 Walking
123456 Tennis
123456 Squash
000001 Bowling
000002 Tennis
000002 Soccer
当我尝试将其转换为这样的存储过程时:
CREATE OR REPLACE PROCEDURE GET_EMP_ID_FOR_HOBBIES(id NUMBER)
AS
x varchar(255);
BEGIN
SELECT emp_id, LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)
INTO x
FROM employee_list
WHERE emp_id = id
GROUP BY HOBBIES;
END;
编译时返回以下错误
错误(6,8):PL/SQL:ORA-00947:没有足够的值
如果是插入,我会理解的。我做错了什么?
【问题讨论】:
-
CREATE PROCEDURE ... IS,IS,不是AS。 -
@TimBiegeleisen - really? *8-)
标签: oracle stored-procedures listagg