Introduction
커서가 무엇이며, 언제 어떻게 사용되며 만들수 있는지 알아 보는 장이다. 실제로 쓰는건 못봤다.
Content
1. 무엇을 커서 : CURSOR 라고 하는가?
SQL 에서 커서란 무엇인가 선택하는 손 으로 이해 하면 된다. 여기서 말하는 무엇은 SELECT의 결과들이다. 이 커서는 SELECT 결과를 차례대로 선택하여 볼 수 있게 해줄 수 있을 뿐 아니라, 원하는 행을 선택 할 수도 있다.
즉, 책 페이지를 p.1 부터 p.10 까지 읽을 수도 있고, p.5 읽고 p.4 ,p.10 순으로 읽을 수도 있다. 똑같은 개념으로 php 에서 pg_fech_result(함수) 의 2번째 인자로 커서 위치를 정할 수 있다.
2. 언제 커서 : CURSOR 를 사용 하는가?
- 연계된 작업으로 첫번째와 마지막 등 특정 위치를 제어 하고자 할 때(당연하지 않는가?)
- 유저가 커서에만 접속하게 만들어, 제약을 걸어둘 필요가 있을 때
- 커서로 열고 있는 동안 기존 데이터가 변화되지 않도록 막을 때
- 한번에 모든 량을 가져오면, 메모리가 부족해 지는 것을 방지하기 위해
3. 어떻게 커서를 사용 하는가?
커서를 사용하기 위해선, 먼저 커서를 정의하고, 정의한 커서를 열고, 연 커서로 원하는 부분의 정보를 뽑고, 다 쓰면 열었던 커서를 닫는다. 하지만 각 DBMS 마다 다르므로, 메뉴얼 참조하길 바란다.
PostgreSQL 의 경우, 바운드 커서와 언바운드커서가 있는데, 언바운드 커서는 쓸모없는 name REFCURSOR를 선언하고 OPEN name FOR ... 식으로 만들어야 하며, 바운드 커서는 DECLARE 를 이용하여 커서를 정의한 커서를 열기 위해서 사용 된다. 보다 자세한건 참조 링크를 참조하기 바란다.
예)
참조 링크
커서 사용시 주의 사항
- 웹기반 응용프로그램에서는 커서를 사용하는 것은 무리가 따른다. 왜냐하면, 커서를 사용 하면, 사용 시간 중 DB 변경을 막게 되므로, 많은 커서 사용은 결국 DB 성능 저하를 불러 일이키기 때문이다.
Digression
이 책을 보면 볼 수록, 많은 것들을 생략하고 진행하고 있다고 생각한다. 아마도 이 책의 목적은 "이런것들을 공부해야 할꺼야!" 라고 일러주는 것 같다. 바로 메뉴얼에서 이런 이런 기능들을 찾거나, 보다 자세히 다룬 책을 찾아 보기 위해 보면 좋겠을 책이다.
'책 정리 > 하루 10분씩 핵심만 골라 마스터하는 SQL' 카테고리의 다른 글
하루 10분씩 핵심만 골라 마스터하는 SQL - 다 읽고 나서... (0) | 2010.02.21 |
---|---|
22장, 고급 SQL 기능의 이해 (0) | 2010.02.21 |
20장, 트랜잭션 처리 : BEGIN TRANSACTION ~ COMMIT TRANSACTION (0) | 2010.02.15 |
19장, 저장 프로시저의 사용 : CREATE PROCEDURE FUNCTION ~ EXECUTE (0) | 2010.02.10 |
18장, 뷰 사용 : CREATE VIEW ~ DROP VIEW (0) | 2010.02.07 |
17장, 테이블의 생성과 제어 : CREATE TABLE ~ ALTER TABLE (0) | 2010.02.05 |
16장, 데이터의 업데이트와 삭제 : UPDATE DELETE (0) | 2010.02.05 |
15장, 데이터 삽입 : INSERT INTO ~ SELECT INTO (0) | 2010.02.02 |
14장, 쿼리의 결합 : UNION 으로 쿼리 결합하기 (0) | 2010.02.02 |
13장, 고급 조인 만들기 : SELF JOIN, NATURAL JOIN, OUTER JOIN (360) | 2010.01.31 |
최근댓글