하나의 저장 프로 시저가 포함 된 oracle 패키지가 있습니다. 입력으로 날짜를 입력하고 숫자를 입력으로 사용하여 ref_cursor로 데이터를 출력합니다. 저장 프로 시저의 목적은 특정 입력 날짜에 해당하는 모든 "당첨 번호"를 추출하는 것입니다.Oracle SQL에서 하나의 커서 변수에 여러 행 값을 반환하려면 어떻게해야합니까?
CREATE OR REPLACE PACKAGE GETWINNINGNUMBERSBYDATEPKG IS
TYPE lotgwndate_ref_cursor IS REF CURSOR;
PROCEDURE GetWinningNumbersDATE (lg_wndate IN date, lg_wnwgid IN number, lg_ref OUT
lotgwndate_ref_cursor);
END GETWINNINGNUMBERSBYDATEPKG;
이것은 패키지 본문입니다. 다시 말하지만, 여기서의 목적은 특정 날짜와 "게임 ID"번호에 해당하는 모든 "승리 숫자"를 추출하는 것입니다. 그런 다음, "우승 수"를 "게임 이름"과 "그리기 날짜"와 쌍으로 연결하고 싶습니다. (복권 그림에서 기록을 추출하는 것입니다)
PROCEDURE GetWinningNumbersDATE (lg_wndate IN date, lg_wnwgid IN number, lg_ref OUT
lotgwndate_ref_cursor) IS
BEGIN
OPEN lg_ref FOR
SELECT a.GAMENAME, b.DRAWINGDATE, c.BALLNUMBER
FROM GAMEDETAILS a
INNER JOIN WINNINGRECORDS b
on a.GAMEDETAILSID = b.GAMEDETAILSID
INNER JOIN WINNINGBALLS c
on b.WINNINGRECORDSID = c.WINNINGRECORDSID
WHERE b.DRAWINGDATE = lg_wndate
AND a.GAMEDETAILSID = lg_wnwgid;
END GetWinningNumbersDATE;
END GETWINNINGNUMBERSBYDATEPKG;
다음은 통화 절차입니다.
SET SERVEROUTPUT ON size 100000
DECLARE
v_cursor LOTTERYGAMEPKG.lotgwndate_ref_cursor;
v_gamename GAMEDETAILS.gamename%type;
v_drawingdate WINNINGRECORDS.drawingdate%type;
v_ballnumber WINNINGBALLS.ballnumber%type;
BEGIN
GETWINNINGNUMBERSBYDATEPKG.GetWinningNumbersDATE(lg_wndate =>
TO_DATE('06/08/2014','dd/mm/yyyy'), lg_wnwgid => '4', /*date/gamedetailsid #(1-4)*/
lg_ref => v_cursor);
LOOP
FETCH v_cursor
INTO v_gamename, v_drawingdate, v_ballnumber;
EXIT WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE
(v_gamename || ',' || v_drawingdate || ',' || v_ballnumber);
END LOOP;
END;
이 작동하고, 반환 : 그러나
NorthstarCash,06-AUG-14,10
NorthstarCash,06-AUG-14,11
NorthstarCash,06-AUG-14,15
NorthstarCash,06-AUG-14,16
NorthstarCash,06-AUG-14,21
, 나는 그것이
NorthstarCash,06-AUG-14,10,11,15,16,21
이 작업을 수행하기 위해 어떤 방법이 있습니까 돌아가려면? 나는 다른 많은 질문을 보았으나 아무도 나의 것과 같은 이슈를 다루지 않는다.
내가 게시 한 질문이 내 질문의 통화 절차 부분을 해결하지 못한다고 생각합니다. select 문만을 처리합니다. agg 문자열 결과를 호출 프로 시저 문에 넣는 방법을 알아 내려고 노력 중입니다. –
불행히도'FETCH'는 실제로 여러분이 숫자를 추가하고 임시 변수를 사용하여 작성해야만합니다 ... 오라클은 아무 관계가 없습니다. –
감사합니다. 나는 이것을 성취 할 수있는 구문을 알지 못한다. 아마도 나를 자원으로 안내 할 수 있을까요? –