Introduction

저장 프로시저란 무엇이고, 어떻게 만들며, 어떻게 사용 하는지, 언제 사용 하는지에 대해서 정리한다.

Content

1. 무엇을 저장 프로시저 라고 하는가?

저장 프로시저란 SQL 로 만든 함수 이다. 이렇게 나는 이해 했다. 이 함수에 여러 SQL 절을 놓아 두어, 한가지 목적으로 사용 한다. 이 책에서는 "배치 파일" 이라고 비유 했다.

2. 왜 저장 프로시저를 사용 하는가?

  • 단위 하나로, 작업을 만들어 저장 할 수 있기 때문이다.

모든 이유는 오로지 이 이유 때문이다. 이 이유 때문에 얻게 되는 건 언어에서 함수를 사용 할 때 얻게 되는 이점과 같다. (작업을 단위로 끊었기에 디버깅이 쉽다거나, 관리(기능 개선, 수정)가 조금(..)은 쉬어진다거나, 반복작업을 없앨 수 있다거나)

여기에 SQL 만이 얻는 장점이 하나 추가 할 수 있는데, 바로 "보안" 이다. 특정 유저에게 UPDATE 나 DELETE 를 막고, 함수만 사용 할 수 있게 막음으로써, 기존 데이터 회손을 최대한 막을 수 있다.(.. 그렇다고 이렇게 쓰는것을 못봤다. 2009.02.08)

3. 어떻게 저장 프로시저를 만드는가?

PostgreSQL 에서 저장프로시저라고 검색해 보면, "함수" 이야기만 나온다. 그렇다. PostgreSQL 에선 CREATE PROCEDURE 로 저장 프로시저를 만들지 않는다. CREATE FUNCTION 이다. 기본적인 SQL 만으로 프로시저를 만들어 사용 할때, 표현이 힘들어서 인지 PL/pgSQL 같은 procedural language(절차지향식 언어)를 사용 한다.

그렇다고 이 의미가 PL/pgSQL 만 지원한다는 것은 아니다. 관련 DBMS를 보아서 지원 가능한 procedural language(절차지향식 언어)가 무엇이 있는지 살피는게 좋겠다.

간단하게 SQL 문 하나만 남긴다.


AS 다음에 ' ' 로 SQL 절을 묶었는데, 이는 BODY 라는 뜻으로, 함수가 실행되는 본체를 뜻한다. ' ' 말고 $$ 로도 묶을 수 있다.

이것 말고도 리턴 타입, 매개변수 타입, 리턴값이 무엇이 되는지 등을 이해 해야 한다. ... 이 모든것을 정리하기엔 오늘 밤이 너무 짦으므로,(나도 잘 모르겠어서, 문서 봐야 돼.) 어디의 문서를 봐야 하는지만 정리한다. 다른 DBMS 에선 어떻게 되는지, 관련 메뉴얼을 보는게, 책을 보는 것보다 더 좋을 것이다.

문서를 보는 방법으로는 C 언어의 함수를 정의 할 때, 리턴 타입과 입력 타입을 정해 주는 것과 동일하다는 시야로 보는 것이다.

관련링크

4. 어떻게 사용 하는가?

실행은 EXECUTE function-name, 이나 SELECT function-name 으로 실행 할 수 있다.

Digression

정말로 DBMS 는 메뉴얼이나 해당 DMBS 책을 보는게 좋다고 생각이 들었다. 이 장에서 얻은 수학은 저장 프로시저가 무엇인지 비유 할수 있었다는 것 이다. (별것도 아니구만!)

저작자 표시
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요