데이터베이스 개발자 질문과 답변 게시판
소스는아래와같은데요 레코드는3건이있는데 처음읽은 데이터만 return이되고 나머지 2레코드는 return이안되고 sql메니지먼트에서 sp실행하면 3개의레코드가 각각의 return값으로나옴니다 원래 리턴값이많으면 그런가요? 만약 3개의 레코드의 값을 다받으려면 어떻게해야하나요... 커서로 만든것은처음이라 고수분께 여쭤봅니다
BEGIN
SET NoCount ON
DECLARE @crt_dt char(8), @sales_no int, @sales_trancompy_seq int;
DECLARE info_cursor CURSOR FOR
SELECT CRT_DT, SALES_NO, SALES_TRANCOMPY_SEQ FROM TA0011
WHERE COMPY_SEQ = 1 AND CRT_DT >= '20120101' AND CRT_DT <= '20120131'
ORDER BY CRT_DT, SALES_TRANCOMPY_SEQ, PURCH_TRANCOMPY_SEQ;
OPEN info_cursor;
FETCH NEXT FROM info_cursor
INTO @crt_dt , @sales_no , @sales_trancompy_seq;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @crt_dt CRT_DT;
FETCH NEXT FROM info_cursor
INTO @crt_dt , @sales_no , @sales_trancompy_seq;
END
CLOSE info_cursor;
DEALLOCATE info_cursor;
END
GO
Comment 1
-
건우아빠
2013.01.18 21:12
커서 안에 보시면 select 문이 있습니다.
커서를 돌면서 select문이 세번 실행을 하게 됩니다. 그래서 결과창이 세번 보여주게 되는겁니다.
중간의 select문은 과정상 실제 돌아가는가를 보기 위한것 같은데..
이 경우는 별도의 테이블을 만드시고 커서안에서 테이블에 값을 insert 하신다음
마지막 select 하시면 한꺼번에 보여 줄수 있습니다.
저런 커서를 하시는 이유가 ? 굳이 커서 쓸필요없는 내용 같은데요....