도슐랭스타
DB - 프로시저(Procedure) 본문
저장 프로그램(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