MYSQL 스토리지 프로세스, 일반적인 논리적 지식 요약
1. 저장 프로세스 문법 만들기 (형식)
DELIMITER $
CREATE PROCEDURE A(IN a INT,IN b VARCHAR(20),OUT c INT)
BEGIN
..........
END $
해결:
2. 저장 과정 내의 구체적인 문법과 논리
A. 변수 구문을 정의합니다.
DECLARE a (INT,VARCHAR(20),BOOLEAN,........) [DEFAULT NULL];
참고: 매개변수 유형 뒤에 DEFAULT NULL을 추가할 수 있습니다.를 참고하십시오.
B. 변수 지정:
방법 1(변수에 직접 할당):
SET a = NEW();
방식2(sql 조회의 결과는 변수에 직접 값을 부여):
SELECT `student`.age INTO a FROM `student` WHERE...........
방식3(sql 조회의 결과는 여러 변수에 직접 값을 부여):
SELECT `student`.name AS a,`student`.age AS b INTO a, b FROM `student` ...............
c. 논리적 판단:
#IF :
IF (3>5) THEN
TRUE .........;
END IF;
#IF ELSE :
IF (a>0) THEN
(a>0) ........;
ELSE IF (a<0) THEN
(a<0) .......;
ELSE
.......;
END IF;
D. 커서, (LOOP) 순환:
# . :create procedure my_procedure() --
begin --
declare my_id varchar(32); -- 1
declare my_name varchar(50); -- 2
DECLARE done INT DEFAULT FALSE; -- , false
DECLARE cur CURSOR FOR ( SELECT id, name FROM t_people ); --
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- , true
OPEN cur; --
posLoop: LOOP -- ,myLoop ,
FETCH cur into my_id, my_name; -- 12
IF done THEN --
LEAVE posLoop; --
END IF;
-- , sql
UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ''; --
COMMIT; --
END LOOP posLoop; --
CLOSE cur; --
END; --
# . :create procedure my_procedure() -- begin --
declare my_id varchar(32); -- 1
declare my_name varchar(50); -- 2
DECLARE done INT DEFAULT FALSE; -- , false
DECLARE cur_1 CURSOR FOR ( SELECT id, name FROM t_people ); --
DECLARE cur_2 CURSOR FOR ( SELECT id_2,name_2 FROM t_people_2); --
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- , true
OPEN cur_1; --
posLoop: LOOP -- ,myLoop ,
FETCH cur_1 into my_id, my_name; -- 12
IF done THEN --
LEAVE posLoop; --
END IF;
-- , sql
UPDATE ..........; --
END LOOP posLoop; --
CLOSE cur_1; --
SET done = FALSE; -- handler TRUE , set FALSE , 。( , )
OPEN cur_2; --
posLoop_2: LOOP -- ,myLoop ,
FETCH cur_2 into my_id, my_name; -- 12
IF done THEN --
LEAVE posLoop_2; --
END IF;
-- , sql
INSERT ..........; --
END LOOP posLoop_2; --
CLOSE cur_2; --
END; --
3. 저장 프로세스의 호출
# CALL ( .....);
# ( )
CALL (@aaa);
SELECT @aaa;
4. 저장 프로세스 삭제
DROP PROCEDURE ;
5. 주의사항
저장 프로세스의 세미콜론(;)중요하니 되도록 생략하지 마세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.