반응형

'create procedure'에 해당되는 글 1건

  1. 2017.12.18 MySQL 저장 프로시저 활용하기.
반응형

MySQL 저장 프로시저 활용하기.

 

저장 프로시저란 무엇인가?

여러 SQL 문을 하나의 SQL 문처럼 정리하여 call 명령으로 실행할 수 있게 만든 것을 저장 프로시저라고 합니다. 저장 프로시저는 일련의 절차를 정리해서 저장한 것입니다.

사전에 준비해 둔 많은 명령을 자동으로 실행할 수 있기 때문에 작업의 효율성도 높일 수 있습니다.

 

저장 프로시저 만들기.

저장 프로시저를 작성할 때에는 다음과 같이 create procedure라는 명령을 사용합니다.

 

create procedure 저장 프로시저명( )

begin

           sql 1;

           sql 2;

end

 

begin 에서 end 까지가 저장 프로시저의 본체입니다.

시작에 begin을 끝에 end를 붙여 저장 프로시저의 명령 범위를 확실히 하고 있습니다.

저장 프로시저의 본체는 평범한 sql문 입니다. 그래서 끝에 종료를 나타내는 세미콜론을 입력해야 합니다. 하지만 이렇게 되면 저장 프로시저를 작성하는 중간에 세미콜론을 입력하게 되어서 저장 프로시저가 완성되지 않은 상태에서 실행이 됩니다. 세미콜론이 입력되면 어떤 경우에서 건 일단 세미콜론 이전 단계까지 명령문을 실행하게 됩니다.

 

구분 문자(;) 변경하기.

명령문이 완성되지 않은 상태에서 실행되면 곤란합니다. 저장 프로시저에서 end를 입력하고 나서 프로시저 명령이 실행되도록 환경을 변경해야 합니다.

그러려면 저장 프로시저를 작성하기 전에 구분 문자를 세미콜론이 아닌 다른 문자로 변경해 둡니다. 일반적으로 //을 사용합니다.

구분 문자를 //으로 변경할 때에는 delimiter명령을 사용합니다.

 

delimiter //

 

구분 문자를 //으로 변경해 두면 저장 프로시저를 작성하는 도중에 세미콜론을 입력해도 문제없습니다. End 뒤에 //을 입력하면 create procedure 명령이 실행됩니다.

저장 프로시저를 모두 작성했으면 delimiter ; 로 구분 문자를 원래대로 되돌려 놓습니다.

프로시저를 호출할 때는 call 프로시저명; 을 사용합니다.

 

select * from table_sales; select * from table_member을 실행하는 저장 프로시저를 생성하겠습니다.

 

delimiter //

create procedure procedure_01( )

begin

select * from table_sales;

select * from table_member;

end

//

delimiter ;

call procedure_01;

 

설정한 값 이상인 레코드만 표시하는 저장 프로시저 만들기.

인수를 대입해서 실행하는 저장 프로시저를 만들어 보겠습니다.

처리하고자 하는 데이터를 괄호( ) 안에 대입해서 저장 프로시저를 실행합니다.

다음은 저장 프로시저에 인수를 대입하는 방법입니다.

procedure 저장프로시저명(인수명 자료형)

 

table_salessales가 인수 s 이상인 레코드를 표시하는 프로시저를 생성해서 호출해 보겠습니다.

 

delimiter //

create procedure procedure_02(s int)

begin

select * from table_sales where sales >= s;

end

//

delimiter ;

call procedure_02(100);

 

 

저장 프로시저의 내용 표시하기.

 

작성한 저장 프로시저의 내용을 표시할 때에는 다음 명령을 실행합니다.

 

show create procedure 저장프로시저명;

 

show create procedure procedure_01;

 

저장 프로시저 삭제하기.

저장 프로시저를 삭제할 때는 데이터베이스나 테이블, 뷰를 삭제할 때와 마찬가지로 drop 명령을 사용합니다.

명령문은 다음과 같습니다.

drop procedure 저장프로시저명;

 

drop procedure procedure_01;

반응형

'MySQL' 카테고리의 다른 글

MySQL 트리거(trigger).  (0) 2017.12.28
MySQL 저장함수.  (0) 2017.12.27
MySQL 뷰 이용하기.  (0) 2017.12.13
MySQL SELECT한 레코드에서 또 SELECT하기 – 하위 질의  (0) 2017.12.11
MySQL 셀프 조인.  (2) 2017.12.08
Posted by 컴스터
,


반응형