본문 바로가기

CS 과목(CS科目)/데이터 베이스(データベース)

11. stored Procedure PART 1

Stored Procedure

프로시저와 함수의 차이를 알고 가자!!!(이 부분이 이해 안 돼도 괜찮다. 아래 부분에서 자세히 다시 다룬다.)

CREATE PROCEDURE product (IN a int, IN b int, OUT result int)

IN : INput 매개변수라는 뜻. 즉 매개변수에 값을 받을 수 있을 뿐, BODY 부분에서 그 변수의 값을 변경하지는 못함. 

OUT : OUTput 매개변수라는 뜻. 즉, 매개변수에 어떤 값을 받을 필요는 없고, BODY 내에서 그 변수에 값을 넣어서 반환시킬 때 사용!

(나중에 배울, INOUT이라는 키워드는 위 2가지 기능을 모두 가지고 있다.)

-> 만약, 매개 변수 앞에 IN, OUT 중 어느 것도 적혀져 있지 않으면, default로 IN이 적용이 된다.

그러나 OUT은 분명히 명시를 해 줘야 한다. 

 

call product(5,7, @result)

-> FUNCTION의 실행과는 다르게 앞에 call을 붙여야 실행이 가능하다.

@result는 DECLARE int result를 대체한다.

 

select @result

-> 변수 result를 출력. 

 

 

이 procedure은 반환값이 없는 것처럼 보인다. 

하지만, 적어도 MySQL에서는 select문을 적어 주면, OUT 매개변수, RETURN 키워드가 없어도 자동으로 값이 반환(출력)

된다. 

 

 

 

위 부분의 기능들은 따로 공부를 해야 함!!!!

 

transaction 

트랜잭션은 "ALL or Nothing"이라고도 불린다. 

왜냐하면, 트랜잭션이란 여러 SQL문을 1개로 묶어서, 그것들이 전부 정상적으로 실행이 되면 그 결과를 반영을 하고, 만약

1개라도 정상적인 실행이 되지 않는다면, 그 어떤 SQL문의 결과도 반영하지 않기 때문이다.

 

프로시저

프로시저는 트랜잭션에서도 사용이 가능하고, 값을 꼭 반환하지 않아도 되고, 파라미터로 1개 이상의 값들을 반환을 할 수

있기에 주로 서버의 비지니스 로직에서 사용된다.