반응형
개요
행의 집합을 다루는 데 제공해주는 편리한 기능
SQL Server의 성능을 느리게 하는 요인이 될 수 있으므로,
특별한 경우가 아니라면 되도록 사용하지 않을 것을 권장함
파일처리시의 파일 포인터와 비슷한 작동을 함
커서의 선언
DECLARE cursor_name CURSOR
[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
커서 관련 쿼리문
SELECT * FROM titles
DECLARE curs_1author_titles CURSOR
-- 변수선언 curs_1author_titles 커서명령어
-- LOCAL -- 지역 커서로 지정하기 위해 필수적
-- STATIC -- 정확한 @@CURSOR_ROWS결과를 위해
FOR
SELECT title_id
FROM titleauthor
-- titleauthor 테이블의 title_id를 보여달라
WHERE royaltyper = 100
ORDER BY title_id
-- 그리고 royaltyper = 100인값의 title_id 목록을 보여달라
DECLARE @title_id varchar(6), @subtotal int, @price int, @qtyy int
-- @title_id, @subtotal, @price 변수선언
OPEN curs_1author_titles
-- curs_1author_titles 를 열어라
FETCH NEXT FROM curs_1author_titles INTO @title_id
--curs_1author_titles 커서에서 title_id의 값을 가져달라
WHILE(@@FETCH_STATUS=0)
-- FETCH STATUS가 0인동안 데이터를 계속 돌려라
BEGIN
-- while문 실행점
SELECT @subtotal = ISNULL(ISNULL(t.price,0)*ISNULL(s.qty,0),0),
-- t.price, q.qty Null값이 있으면 0을 넣어라.
-- 그리고 t.price * q.qty의 값을 @subtotal 정의해라
@price = t.price,
@qtyy = s.qty
-- subtotal, price, qtyy의 값들을 @subtotal,price, qtyy에 넣어라
FROM titles AS t
JOIN sales AS s
ON t.title_id = s.title_id
-- INNER 조인해줘라.
WHERE t.title_id = @title_id
PRINT '단일 저자 책(' + @title_id + ')판매 금액: '
+ CONVERT(varchar(10), @price*@qtyy) + ', 서브토탈: ' +
CONVERT(varchar(20), @subtotal)
/*
화면에 표시해라 단일저자책 + title_id + 판매금액 +
varchar(10)형으로 @price*@qtyy값 + 서브토탈 +
varchar(20)형으로 @subtotal값
*/
FETCH NEXT FROM curs_1author_titles INTO @title_id
-- while 문이 끝날때는 한번더 써줘야함
-- 지금은 19번째줄에 써져있음
END
-- while문 종료
close curs_1author_titles
-- 커서 닫아주기
DEALLOCATE curs_1author_titles
-- 커서를 메모리에서 해제
'Database > MS-SQL' 카테고리의 다른 글
DB 트리거 백업트리고 사용법 INSERT INTO SELECT 설명 (0) | 2008.10.20 |
---|---|
DB 트리거 (TRIGGER ) DML트리거와 DDL트리거 DCL트리거 (0) | 2008.10.20 |
DB CASE 문을 2개 안쓰고 한개로쓰기 (0) | 2008.10.20 |
DB CASE문 LEFT RIGHT SUBSTRING함수 (0) | 2008.10.17 |
SELECT 문과 함수사용 (0) | 2008.10.17 |
DB 사용자정의 함수기본 사용자정의함수 예제 (0) | 2008.10.16 |
DB 프로시저 묶기 INS(삽입), UPD(수정), DEL(삭제), SEL(전체), SEA(하나) (0) | 2008.10.16 |
저장 프로시저 수정문 삭제문 셀렉트문 (0) | 2008.10.16 |