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

이 책을 보면 볼 수록, 많은 것들을 생략하고 진행하고 있다고 생각한다. 아마도 이 책의 목적은 "이런것들을 공부해야 할꺼야!" 라고 일러주는 것 같다. 바로 메뉴얼에서 이런 이런 기능들을 찾거나, 보다 자세히 다룬 책을 찾아 보기 위해 보면 좋겠을 책이다.

posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요

  1. Favicon of http://www.ikpil.com 농사를 짓는 게임 프로그래머 최익필 2010.08.10 02:19 신고  Addr  Edit/Del  Reply

    내가 정리했지만, 정말 알아야 하는 것들만 정리했다. :-)
    프로시저 공부할 때, 다시 커서 공부해야지.