Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DML
- github
- 자바
- 다이어그램
- 인스턴스
- asp.net
- 아파치톰캣
- Linux_명령어정리
- SQL
- JavaScript
- CSS
- 배열
- git
- workbench
- vb.net
- Linux
- json
- MySQL
- Spring_오류정리
- spring
- Spring_에러정리
- Git_명령어정리
- HTML
- 자바스크립트
- 인덱스
- jsp
- java
- Git_정리
- 이클립스
- SQL_용어정리
Archives
- Today
- Total
데브마우스
[SQL] 스토어드 프로시저(함수), PREPARE와 EXECUTE 정리 본문
스토어드 프로시저란 무엇인가요?
- 스토어드 프로시저는 MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스의 개체입니다.
- SQL의 프로그래밍은 스토어드 프로시저 안에서 작성되어야 합니다.
스토어드 프로시저는 어떻게 작성하나요?
아래는 스토어드 프로시저 코드 형식입니다.
프로시저를 실행하기 위해서는 CREATE PROCEDURE를 한 번 실행하신 후 CALL 스토어_프로시저_이름();으로 프로시저를 호출할 수 있습니다. $$ 대신 다른 특수문자(/, & 등)도 사용이 가능합니다.
DELIMITER $$ -- DELIMITER와 특수문자 사이에 공백이 있습니다.
CREATE PROCEDURE 스토어드_프로시저_이름()
BEGIN
-- SQL 프로그래밍 코드
END $$
DELIMITER ; -- 띄워쓰기에 주의하셔야 합니다.
CALL 스토어드_프로시저_이름(); -- 프로시저를 호출하는 코드입니다.
스토어드 프로시저 안에는 무엇이 작성될 수 있나요?
들어갈 수 있는 코드 | 설명 | 코드 형식 |
IF | 조건문으로 IF 조건식이 참이면 실행하고 아니면 실행하지 않습니다. | IF <조건식> THEN -- SQL 코드 END IF; |
IF ~ ELSE | 조건문으로 IF 조건문이 참이면 IF의 코드를 실행하고 아니면 ELSE의 코드를 실행합니다. | IF <조건식> THEN -- SQL 코드 ELSE -- SQL 코드 END IF; |
CASE | 여러가지 조건 중에서 선택해야하는 경우 CASE 문을 사용합니다. | CASE WHEN 조건1 THEN -- SQL 코드1 WHEN 조건2 THEN -- SQL 코드2 ELSE -- SQL 코드4 END CASE; |
WHILE | WHILE 문은 조건식이 참인 동안 SQL 코드를 반복해서 실행합니다. | WHILE <조건식> DO -- SQL 코드 END WHILE; |
ITERATE (WHILE에서 사용) |
지정한 레이블로 가서 계속 진행합니다. Java의 continue와 비슷하며 C언어의 GOTO와 비슷하기도 합니다. |
ITERATE [레이블]: |
LEAVE (WHILE에서 사용) |
지정한 레이블로 빠져나갑니다. WHILE문을 종료합니다. Java의 break와 비슷합니다. |
LEAVE [레이블]; |
PREPARE와 EXECUTE
PREPARE는 SQL문을 실행하지 않고 미리 준비만 해둡니다.
실행이 필요한 시점에서 EXECUTE로 준비한 SQL문을 실행합니다.
PREPARE와 EXECUTE를 실행 하신 후 DEALLOCATE PREPARE로 문장을 해제시켜주셔야 합니다.
아래는 예제 코드입니다.
create table gate_table (id int auto_increment primary key, entry_time year);
SET @curDate = YEAR(CURRENT_TIMESTAMP()); -- 현재 년도를 변수 처리합니다..
PREPARE myQuery FROM 'INSERT INTO gate_table values(null, ?)';
EXECUTE myQuery USING @curDate;
DEALLOCATE prepare myQuery;
SELECT * FROM gate_table;
'데이터베이스 > SQL: 정리' 카테고리의 다른 글
[SQL] 제약 조건(PK, FK, UNIQUE, CHECK, DEFAULT, NOT NULL) 정리 (0) | 2024.01.04 |
---|---|
[SQL] 테이블 만드는 방법 정리 (0) | 2024.01.04 |
[SQL] 조인 정리: 내부 조인, 외부 조인, 상호 조인, 자체 조인 (0) | 2024.01.03 |
[SQL] DELETE, DROP, TRUNCATE 속도 비교 정리 (0) | 2024.01.03 |
[SQL] SQL의 데이터 형식, 변수, 형변환 정리 (0) | 2024.01.03 |