여러 행을 가져와 하나의 변수에 저장 - ORACLE 저장 프로시저
ORACLE STOREED PROCESS 작업 중인데 의문이 듭니다.1개 이상의 행을 가져오는 쿼리가 있는데 그 3개의 행의 값을 모두 1개의 변수에 저장하고 싶습니다.누가 이것 좀 도와줄 수 있습니까?
내 쿼리는 다음과 같습니다.
SELECT STUDENT_NAME FROM STUDENT.STUDENT_DETAILS WHERE CLASS_ID= 'C';
여기서 이 쿼리는 3개의 이름을 가져옵니다.
잭,질,버니
저는 이 3개의 이름을 모두 1변수 즉, C_NAMES에 저장하기를 원합니다.그리고 그 후 저는 절차의 추가 단계에서 그 변수를 사용하고 있습니다.
누가 이것 좀 도와줄 수 있습니까?
저는 당신의 시간과 노력에 매우 감사드립니다.
미리 감사드립니다.
브린다 :)
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;
Oracle 버전(>= 11G(11.2))에 따라 LISTAG:
SELECT LISTAGG(STUDENT_NAME,',') WITHIN GROUP (ORDER BY STUDENT_NAME)
FROM STUDENT.STUDENT_DETAILS
WHERE CLASS_ID= 'C';
편집: Oracle 버전이 11G(11.2)보다 낮은 경우 여기를 참조하십시오.
안녕하세요. 시간 내주셔서 감사합니다.저는 그 질문을 해결했고 모든 것은 에더슨 덕분입니다.
해결책은 다음과 같습니다.
SELECT WM_CONCAT(STUDENT_NAME)
FROM STUDENT.STUDENT_DETAILS WHERE CLASS_ID= 'C';
이제 저장 프로시저 또는 PLSQL에서 이를 사용하는 경우 변수를 생성하여 사용하기만 하면 됩니다.SELECT INTO
그것과 함께 그리고 변수를 인쇄합니다.
코드는 여기 있습니다.
DECLARE
C_NAMES VARCHAR2(100);
BEGIN
SELECT WM_CONCAT(STUDENT_NAME) INTO C_NAMES
FROM STUDENT.STUDENT_DETAILS WHERE CLASS_ID= 'C';
dbms_output.put_line(sname);
END;
도와주신 분들께 다시 한번 감사드립니다.
이 작업을 위해서는 커서가 필요합니다.
DECLARE
CURSOR stud_cur IS
SELECT STUDENT_NAME FROM STUDENT.STUDENT_DETAILS WHERE CLASS_ID= 'C';
l_stud STUDENT.STUDENT_DETAILS%ROWTYPE;
BEGIN
OPEN stud_cur;
LOOP
FETCH stud_cur INTO l_stud;
EXIT WHEN stud_cur%NOTFOUND;
/* The first time, stud_cur.STUDENT_NAME will be Jack, then Jill... */
END LOOP;
CLOSE stud_cur;
END;
언급URL : https://stackoverflow.com/questions/16967199/fetch-multiple-rows-and-store-in-1-variable-oracle-stored-procedure
'sourcecode' 카테고리의 다른 글
click() 이벤트가 jQuery에서 두 번 호출됩니다. (0) | 2023.10.30 |
---|---|
jQuery와 jQuery Mobile의 차이점은? (0) | 2023.10.30 |
iPhone ObjectiveC Apps의 C/C++ 정적 라이브러리 사용 (0) | 2023.10.30 |
PostgreSQL에 비해 Mysql에 진공이 필요 없는 이유는 무엇입니까? (0) | 2023.10.30 |
사용 - PowerShell에서 여러 문자열을 걸러내는 것을 좋아하지 않습니다. (0) | 2023.10.30 |