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://ikpil.com 농사를 짓는 게임 프로그래머 최익필 2010.08.10 02:19 신고  Addr  Edit/Del  Reply

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