반응형
Chapter 17. 스토어드 프로시저와 함수
17.1. 스토어드 루틴 및 그랜트 테이블
17.2. 스토어드 프로시저 신텍스
17.2.1. CREATE PROCEDURE 및 CREATE FUNCTION 신텍스
17.2.2. ALTER PROCEDURE 및 ALTER FUNCTION 신텍스
17.2.3. DROP;;;; PROCEDURE 및 DROP;;;; FUNCTION 신텍스
17.2.4. SHOW CREATE PROCEDURE 및 SHOW CREATE FUNCTION 신텍스
17.2.5. SHOW PROCEDURE STATUS 및 SHOW FUNCTION STATUS 신텍스
17.2.6. CALL 명령문 신텍스
17.2.7. BEGIN ... END 복합 명령문 신텍스
17.2.8. DECLARE 명령문 신텍스
17.2.9. 스토어드 루틴내의 변수
17.2.10. 조건문 및 핸들러
17.2.11. 커서
17.2.12. 제어 구성 요소 흐름
17.3. 스토어드 프로시저, 함수, 트리거, 및 리플리케이션: FAQ
17.4. 스토어드 루틴 및 트리거의 바이너리 로깅
MySQL 5.0은 루틴 (프로시저 및 함수)을 지원한다. 스토어드 프로시저란 서버 내에 저장할 수 있는 SQL 명령문의 조합을 의미한다. 일단 이것을 실행하면, 클라이언트는 개별 명령문을 다시 불러들이는 대신에 이 스토어드 프로시저를 참조하기만 하면 된다.
스토어드 루틴이 유용하게 사용되는 경우를 보면:
다중의 클라이언트 애플리케이션이 서로 다른 언어로 쓰여진 경우, 또는 서로 다른 플랫폼에서 수행되어 지는 경우에라도 동일한 데이터 베이스 기능을 수행해야 할 경우.
보안이 최우선 과제일 경우. 예를 들어, 은행에서는 스토어드 프로시저 및 함수를 모든 일반 기능에 적용할 수 있다. 이를 통해 은행은 업무의 일관성 및 안전한 데이터 베이스 환경을 보장 받게 되며, 또한 루틴은 각 기능이 적절하게 등록되어짐을 보장하게 된다. 이러한 설정 내에서, 애플리케이션 및 사용자는 데이터 베이스 테이블에 직접 접근하는 대신에 특정 스토어드 루틴만을 실행할 수 있게 된다.
스토어드 루틴은 서버와 클라이언트간에 최소한의 정보만을 주고 받기 때문에 성능 향상을 제공 한다. 트레이드오프(tradeoff)는 클라이언트 (애플리케이션)상에서 진행되는 업무량 보다 서버에서 진행되는 업무량이 많기 때문에 데이터 베이스 서버상의 업무량을 증가시키는 것을 의미한다. 웹 서버와 같은 많은 클라이언트 장비가 단지 한 개 또는 적은 수의 데이터 베이스와 같이 업무를 진행한다고 가정해 보라.
또한, 스토어드 루틴은 데이터 베이스 서버 내에 함수 라이브러리를 가질 수 있게 한다. 이 기능은 대부분의 현대적인 애플리케이션 언어가 공유하는 기능이다. 이러한 클라이언트 애플리케이션 언어의 특성을 사용하는 것은 데이터 베이스 영역을 벗어나 있는 프로그래머일 지라도 매우 유용하게 사용할 수 있는 기능이다.
MySQL은 스토어드 루틴에 대해 SQL:2003 신텍스를 준수하며, IBM의 DB2도 위의 신텍스를 동일하게 준수하고 있다.
MySQL은 스토어드 루틴에 대해 계속 완성도를 높여가는 중이다. 이 장에서 언급하는 모든 신텍스는 계속 보완될 것이며, 어떠한 제약 사항 및 확장되는 내용은 적정한 곳에 문서화를 할 예정이다. 스토어드 루틴의 사용에 대한 보다 자세한 제약 사항은 Section I.1, “스토어드 루틴 및 트리거상의 제약 사항” 에서 다루기로 한다.
스토어드 루틴에 대한 바이너리 로깅은 Section 17.4, “스토어드 루틴 및 트리거의 바이너리 로깅” 에서 다루기로 한다.
17.1. 스토어드 루틴 및 그랜트 테이블
17.2. 스토어드 프로시저 신텍스
17.2.1. CREATE PROCEDURE 및 CREATE FUNCTION 신텍스
17.2.2. ALTER PROCEDURE 및 ALTER FUNCTION 신텍스
17.2.3. DROP;;;; PROCEDURE 및 DROP;;;; FUNCTION 신텍스
17.2.4. SHOW CREATE PROCEDURE 및 SHOW CREATE FUNCTION 신텍스
17.2.5. SHOW PROCEDURE STATUS 및 SHOW FUNCTION STATUS 신텍스
17.2.6. CALL 명령문 신텍스
17.2.7. BEGIN ... END 복합 명령문 신텍스
17.2.8. DECLARE 명령문 신텍스
17.2.9. 스토어드 루틴내의 변수
17.2.10. 조건문 및 핸들러
17.2.11. 커서
17.2.12. 제어 구성 요소 흐름
17.3. 스토어드 프로시저, 함수, 트리거, 및 리플리케이션: FAQ
17.4. 스토어드 루틴 및 트리거의 바이너리 로깅
MySQL 5.0은 루틴 (프로시저 및 함수)을 지원한다. 스토어드 프로시저란 서버 내에 저장할 수 있는 SQL 명령문의 조합을 의미한다. 일단 이것을 실행하면, 클라이언트는 개별 명령문을 다시 불러들이는 대신에 이 스토어드 프로시저를 참조하기만 하면 된다.
스토어드 루틴이 유용하게 사용되는 경우를 보면:
다중의 클라이언트 애플리케이션이 서로 다른 언어로 쓰여진 경우, 또는 서로 다른 플랫폼에서 수행되어 지는 경우에라도 동일한 데이터 베이스 기능을 수행해야 할 경우.
보안이 최우선 과제일 경우. 예를 들어, 은행에서는 스토어드 프로시저 및 함수를 모든 일반 기능에 적용할 수 있다. 이를 통해 은행은 업무의 일관성 및 안전한 데이터 베이스 환경을 보장 받게 되며, 또한 루틴은 각 기능이 적절하게 등록되어짐을 보장하게 된다. 이러한 설정 내에서, 애플리케이션 및 사용자는 데이터 베이스 테이블에 직접 접근하는 대신에 특정 스토어드 루틴만을 실행할 수 있게 된다.
스토어드 루틴은 서버와 클라이언트간에 최소한의 정보만을 주고 받기 때문에 성능 향상을 제공 한다. 트레이드오프(tradeoff)는 클라이언트 (애플리케이션)상에서 진행되는 업무량 보다 서버에서 진행되는 업무량이 많기 때문에 데이터 베이스 서버상의 업무량을 증가시키는 것을 의미한다. 웹 서버와 같은 많은 클라이언트 장비가 단지 한 개 또는 적은 수의 데이터 베이스와 같이 업무를 진행한다고 가정해 보라.
또한, 스토어드 루틴은 데이터 베이스 서버 내에 함수 라이브러리를 가질 수 있게 한다. 이 기능은 대부분의 현대적인 애플리케이션 언어가 공유하는 기능이다. 이러한 클라이언트 애플리케이션 언어의 특성을 사용하는 것은 데이터 베이스 영역을 벗어나 있는 프로그래머일 지라도 매우 유용하게 사용할 수 있는 기능이다.
MySQL은 스토어드 루틴에 대해 SQL:2003 신텍스를 준수하며, IBM의 DB2도 위의 신텍스를 동일하게 준수하고 있다.
MySQL은 스토어드 루틴에 대해 계속 완성도를 높여가는 중이다. 이 장에서 언급하는 모든 신텍스는 계속 보완될 것이며, 어떠한 제약 사항 및 확장되는 내용은 적정한 곳에 문서화를 할 예정이다. 스토어드 루틴의 사용에 대한 보다 자세한 제약 사항은 Section I.1, “스토어드 루틴 및 트리거상의 제약 사항” 에서 다루기로 한다.
스토어드 루틴에 대한 바이너리 로깅은 Section 17.4, “스토어드 루틴 및 트리거의 바이너리 로깅” 에서 다루기로 한다.
반응형