도슐랭스타

DB - 프로시저(Procedure) 본문

DB

DB - 프로시저(Procedure)

도도.__. 2024. 5. 28. 09:46

저장 프로그램(Stored Program)

  • 데이터베이스 응용 프로그램을 작성하는데 사용하는 MySQL의 SQL 전용 언어.
  • SQL 문에 변수, 제어, 입출력 등의 프로그래밍 기능을 추가하여 SQL 만으로 처리 어려운 문제를 해결.
  • 저장 프로그램은 Workbench에서 바로 작성-> 컴파일-> 결과를 실행
  • 프로그램 로직을 '프로시저(Procedure)'로 구현.

Procedure(프로시저)

  • 프로시저 정의를 위해서는 CREATE PROCEDURE 문을 사용함.
#삽입 또는 수정하는 프로시저
create procedure `InsertOrUpdate`(
    new_product varchar(100),
    new_brand varchar(100),
    new_price int
)
begin
declare mycount int;
select count(*) into mycount from products
	where product like new_product and brand like new_brand;
if mycount !=0 then
    update products set price = new_price
    	where products like new_product and brand like new_brand;
else
    insert into products(product, brand, price)
    	values (new_product, new_brand, new_price);
end if;
end
요소 의미
Delimiter 프로시저 내부의 SQL 문장을 구분하는 구분자
BEGIN-END 프로시저의 실행 부분을 감싸는 블록
IF-ELSE 조건에 따라 다른 동작을 수행하는 제어문
LOOP 반복 실행을 위한 제어문
WHILE 조건이 참인 동안 반복 실행하는 제어문
REPEAT 조건이 거짓이 될 때까지 반복 실행하는 제어문
RETURN 프로시저를 종료하고 결과를 반환하는 명령어

저장 프로시저 매개변수

IN 프로시저에 값을 전달함. 프로시저 내부에서 값을 수정할 수는 있지만 프로시저가 반환되고 나서는 호출자가 수정할 수 없다.
OUT 프로시저의 값을 호출자에게 다시 전달함.
function의 return과 비슷함.
INOUT 호출자에 의해 하나의 변수가 초기화되고 프로시저에 의해 수정됨. IN+OUT의 결합.

커서를 사용하는 프로시저

  • 커서(cursor)는 실행 결과 테이블을 한 번에 한 행씩 처리하기 위해 테이블의 행을 순서대로 가리키는 데 사용함.
키워드 역할
CURSOR <cursor 이름> IS <커서 정의> 커서를 생성
OPEN <cursor 이름> 커서의 사용을 시작
FETCH <cursor 이름> INTO <변수> 행 데이터를 가져옴
CLOSE <cursor 이름> 커서의 사용을 끝냄

 

반응형

'DB' 카테고리의 다른 글

제2정규형과 BCNF 차이  (0) 2025.04.07
DB - 트랜잭션(transaction)  (0) 2024.06.07
집계 함수  (2) 2024.04.29
ORDER BY  (0) 2024.04.22
클러스터, 넌클러스터 인덱스  (0) 2024.04.15
Comments