Listagg 结果绑定变量
Listagg result binding variable
我有这个查询 select LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) as "id_no" from student_all
。
它正在工作,但我想在变量中使用结果,所以我这样写了这个查询
select LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) into a_value from student_all
但它不起作用。我的错误是缺少关键字。
我也想为测试写一个函数,但同样error.I没有创建函数。
CREATE OR REPLACE
FUNCTION list_id(
periods IN NUMBER,
p_student_id IN NUMBER)
RETURN VARCHAR2
AS
str VARCHAR2(200);
BEGIN
SELECT LISTAGG(id, ',') WITHIN GROUP (
ORDER BY id DESC)
INTO str
FROM student_all
WHERE status = 'IN' AND id = p_student_id FETCH FIRST periods ROWS ONLY
RETURN str;
END;
你有什么想法吗?
您的代码存在多个问题。
SELECT
语句末尾缺少分号
FETCH
子句使用不当。
我认为您正在寻找仅获取几行然后执行 LISTAGG
的代码。您可以使用以下代码。
SELECT LISTAGG(id, ',') WITHIN GROUP (ORDER BY id DESC)
INTO str
FROM (SELECT ID
FROM student_all
WHERE status = 'IN'
AND id = p_student_id
ORDER BY ID
FETCH FIRST periods ROWS ONLY);
我有这个查询 select LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) as "id_no" from student_all
。
它正在工作,但我想在变量中使用结果,所以我这样写了这个查询
select LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) into a_value from student_all
但它不起作用。我的错误是缺少关键字。
我也想为测试写一个函数,但同样error.I没有创建函数。
CREATE OR REPLACE
FUNCTION list_id(
periods IN NUMBER,
p_student_id IN NUMBER)
RETURN VARCHAR2
AS
str VARCHAR2(200);
BEGIN
SELECT LISTAGG(id, ',') WITHIN GROUP (
ORDER BY id DESC)
INTO str
FROM student_all
WHERE status = 'IN' AND id = p_student_id FETCH FIRST periods ROWS ONLY
RETURN str;
END;
你有什么想法吗?
您的代码存在多个问题。
SELECT
语句末尾缺少分号FETCH
子句使用不当。
我认为您正在寻找仅获取几行然后执行 LISTAGG
的代码。您可以使用以下代码。
SELECT LISTAGG(id, ',') WITHIN GROUP (ORDER BY id DESC)
INTO str
FROM (SELECT ID
FROM student_all
WHERE status = 'IN'
AND id = p_student_id
ORDER BY ID
FETCH FIRST periods ROWS ONLY);