vri*_*tia 9 oracle variables stored-procedures multirow
我正在研究ORACLE STORED PROCEDURES,我有一个疑问.我有一个查询,它获取超过1行,我想将所有这3行的值存储在1个变量中.任何人都可以帮助我.
我的QUERY是这样的:
SELECT STUDENT_NAME
FROM STUDENT.STUDENT_DETAILS
WHERE CLASS_ID= 'C';
此查询在此处获取3个名称
杰克,吉尔,兔子
我希望所有这3个名字都存储在1个变量中,即C_NAMES.之后我在我的程序的后续步骤中使用该变量.
任何人都可以帮我这个.
我非常感谢您的时间和精力.
提前致谢,
温达:)
the*_*slk 21
CREATE PROCEDURE a_proc
AS
CURSOR names_cur IS
SELECT student_name
FROM student.student_details
WHERE class_id = 'C';
names_t names_cur%ROWTYPE;
TYPE names_ntt IS TABLE OF names_t%TYPE; -- must use type
l_names names_ntt;
BEGIN
OPEN names_cur;
FETCH names_cur BULK COLLECT INTO l_names;
CLOSE names_cur;
FOR indx IN 1..l_names.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(l_names(indx).student_name);
END LOOP;
END a_proc;
Run Code Online (Sandbox Code Playgroud)
根据您的 Oracle 版本(>= 11G(11.2)),您可以使用 LISTAGG:
SELECT LISTAGG(STUDENT_NAME,',') WITHIN GROUP (ORDER BY STUDENT_NAME)
FROM STUDENT.STUDENT_DETAILS
WHERE CLASS_ID= 'C';
Run Code Online (Sandbox Code Playgroud)
编辑:如果您的 Oracle 版本低于 11G(11.2),请查看此处