롸?

Procedure & Function 본문

DB/Maria DB

Procedure & Function

허니버터새우깡 2020. 2. 14. 16:04

저장 프로시저 (Stored Procedure)

  • 여러 sql문을 하나의 sql문처럼 정리하여 실행할 수 있게 만든 것

  • Call 프로시저명; 으로 호출해서 사용한다

  • 변수, 조건문, 반복문 등과 같은 프로그래밍 기법을 구사할 수 있어 SQL 처리를 좀 더 빠르고도 효과적으로 할 수 있다.

 

프로시저 기본 구조

CREATE [OR REPLACE] PROCEDURE 프로시저_이름( )
BEGIN
     작업할 SQL문
     ...
     작업할 SQL문
END

프로시저의 내용은 begin부터 end까지이다. 도중의 sql문의 끝에는 [ ; ] 를 작성해야한다. 하지만 프로시저 본체는 평범한 sql문으로 읽기 때문에 프로시저가 끝나기 전에 sql문의 [ ; ] 를 만나면서 종료하게 된다.

따라서 [ ; ] 를 만나도 종료되지 않도록 구분문자를 바꿔줘야 하는데 이때 delimiter 명령을 사용한다

 

 

Delimiter : 구문 문자 정의

delimiter $$

즉 이 뒤로는 $$를 써야 종료된다는 의미

 

 

Delimiter 를 포함하여 프로시저를 작성하면 이렇게 된다. ($$ 혹은 // 를 써도 된다)

DELIMITER $$
CREATE PROCETURE 프로시저_이름( )
BEGIN
   작업 sql문
   ...
END $$
DELIMITER ;

 

 

 

저장 함수(Stored Function)

  • 프로시저와 거의 동일

  • 프로시저와 다르게 실행 후 값을 반환한다.

 

저장 함수 기본 구조

DELIMITER $$
CREATE [OR REPLACE] FUNCTION 함수_이름( ) RETURNS 반환값의자료형
BEGIN
    SQL문
    ...
END
DELIMITER ;

 

함수 활용하기 예시

SELECT 함수명(인자값);

 

함수는 값을 반환하기 때문에 call이 아닌 select로 값을 표시한다.

(프로시저와 함수 모두 인자값은 필수가 아닌 선택임)

 

 

 


참고 

1.  https://recoveryman.tistory.com/186?category=595002

2.  https://devonce.tistory.com/27

'DB > Maria DB' 카테고리의 다른 글

properties를 이용한 MariaDB 연결  (0) 2020.02.17
이클립스에서 MariaDB 드라이버 로딩 방법  (0) 2020.02.17
View  (0) 2020.02.14
트랜잭션(Transactions)  (0) 2020.02.13
Subquery - 2  (0) 2020.02.13
Comments