본문 바로가기
카테고리 없음

[MySQL] 스토이드 프로시저

by UltraLowTemp-Physics 2021. 8. 2.
728x90

a. MySQL에서 제공하는 프로그래밍 기능 
b. SQL 문 여러 개를 하나로 묶어서 편리하게 사용할 수 있는 기능 
  - 즉, 쿼리 문을 모듈화시켜서 필요할 때마다 호출하여 사용 

스토어드 프로시저의 특징 

특징 설명
MySQL의 성능을
향상시킬 수 있음
a. 긴 코드로 구현된 코드를 실행할 경우, 클라이언트에서 서버로 모든 쿼리 텍스트들이 전송되어야 함 
b. 긴 코드로 구현된 스포어드 프로시저가 있을 경우, 매개 변수 및 이름 정도만 서버로 보내면 됨
  - 결과적으로 네트워크 부하가 줄어듬 
유지 관리가 간편함 a. C#이나 Java등의 클라이언트 응용 프로그램에서 직접 SQL 문을 작성하지 않고 스포어드 프로시저의 이름만 호출하도록 설정. 
  - 데이터 베이스에 관한 스토어드 프로시저 내용을 일관적으로 수정/유지가능  
모듈식 프로그래밍 가능 a. 스토어드 프로시저로 저장해 놓은 퀴리의 수정, 삭제 등의 관리가 수월해짐
보안 강화 사용자 별로 테이블에 접근 권한을 주지 않고, 스토어드 프로시저에만 접근 권한을 줌으로써 보안을 강화할 수 있음 

 

1. 스토어드 프로시저의 정의 형식

CREATE
    [DEFINER = user]
    PROCEDURE sp_name (proc_parameter[,...])
    [characteristic ...] routine_body

proc_parameter: 
    [IN|OUT|INOUT] parameter type 
    
characteristic:
    COMMENT 'string'
    | LANGUAGE SQL
    | [NOT] DETERMINISTIC 
    | {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} 
    | SQL SECURITY { DEFINER | INVOKER }

routine_body:
    Valid SQL routine statement

 

※ 스토어드 프로시저의 간단한 형식 

DELIMITER $$
CREATE PROCEDURE <스토어드 프로시저 이름>
BEGIN
	<이부분에 SQL 프로그래밍 코딩>
END $$
DELIMITER ;
CALL <스토어드 프로시저 이름>;

  (1) DELIMITER $$ ~ END $$: 스토어드 프로시저의 코딩할 부분을 묶어줌 
    - MySQL의 종료문자는 세미콜론인데, PROCEDURE 안에서도 종료문자가 나오므로 어디까지가 스토어드 프로시저인지 알려줘야 함 
  (2) DELIMITER ; 
    - 종료 문자를 다시 세미콜론(;)으로 변경함 
  (3) CALL <스포어드 프로시저>; 
    - 생성된 스포어드 프로시저를 실행 

 

1) 매개변수 사용

스토어드 프로시저에서는 실행 시에 사용되는 입력 매개 변수를 지정할 수 있음 

  (1) 입력 매개 변수 지정: IN 입력_매개변수_이름 데이터_형식 
  (2) 출력 매개 밴수 지정: OUT 출력_매개변수_이름 데이터_형식

728x90

댓글