우선 답변 감사드립니다.
다시 질문드립니다.
CREATE OR REPLACE PACKAGE "YOOSUNGTNS"."PKG_NOTICE" AS
TYPE T_CURSOR IS REF CURSOR ;
PROCEDURE SP_GETDATA (A_MEMNO IN NOTICE.MEM_NO%TYPE, A_SEQ IN NOTICE.SEQ%TYPE, IO_CURSOR IN OUT T_CURSOR);
PROCEDURE procNotice_Next (MemNo IN NOTICE.MEM_NO%TYPE, sno IN NUMBER, IO_CURSOR IN OUT T_CURSOR);
END PKG_NOTICE;
패키지 선언부에 위와같이 선언하고 패키지 몸체에
CREATE OR REPLACE PACKAGE BODY "YOOSUNGTNS"."PKG_NOTICE" AS
PROCEDURE SP_LIST (TOP_SEARCH IN NUMBER, A_MEMNO IN NOTICE.MEM_NO%TYPE, IO_CURSOR IN OUT T_CURSOR)
IS
V_CURSOR T_CURSOR;
BEGIN
OPEN V_CURSOR FOR
SELECT /*+index_desc(notice, notice_pk)*/
MEM_NO, SEQ, TITLE, CONTENT, IMPORTANT_VALUE, VISITED, IN_DATE
FROM NOTICE
WHERE TO_CHAR(SYSDATE,'YYYYMMDD')
BETWEEN TO_CHAR(RUNNING_FROM,'YYYYMMDD')
AND TO_CHAR(RUNNING_TO,'YYYYMMDD')
AND MEM_NO = A_MEMNO
AND ROWNUM <= TOP_SEARCH
ORDER BY IN_DATE DESC;
--커서를 리턴한다.
IO_CURSOR := V_CURSOR;
END SP_LIST;
END PKG_NOTICE;
위와 같이 선언하여 사용하고 있습니다.
혹시 리턴 되는 형식이 TYPE T_CURSOR IS REF CURSOR 로 정의되어 그러는 것이 아닌가 하는 생각을 해봅니다.
그리고 지적해주신 힌트문법도 바꿔서 해 보았지만 똑같습니다.
다시한번 답변 부탁드립니다.
즐겁고 행복한 하루되시길...
>>firebird 님께서 쓰시길<<
:: 프로시져에서도 힌트 사용가능합니다.
:: 프로시져이기 때문에 그런것 같지는 않군요.
:: 그리고 아래 힌트 문법에서 컴마가 없는게 맞습니다.
::
:: >>travolta 님께서 쓰시길<<
::
:: :: 직접 쿼리하면 힌트가 먹혀 레코드가 나오는데
:: :: 프로시저로 하면 힌트가 먹질 않네요.
:: ::
:: :: 프로시저에서는 힌트적용이 안되나요?
:: ::
:: :: select /*+index_desc(notice,notice_pk)*/ mem_no, seq, title
:: :: from Notice where seq < sno and mem_no=MemNo
:: :: and rownum = 1 and to_char(sysdate,'YYYYMMDD') BETWEEN to_char(running_from,'YYYYMMDD') AND
:: to
:: :: _char(running_to,'YYYYMMDD')
:: :: order by seq;
:: ::
:: :: sno와 memno를 파라메터로 받아서 실행하는 쿼리문입니다.
:: :: 답변 부탁드립니다.
|