sourcecode

여러 행을 가져와 하나의 변수에 저장 - ORACLE 저장 프로시저

codebag 2023. 10. 30. 20:57
반응형

여러 행을 가져와 하나의 변수에 저장 - 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

반응형