블로그는 나의 힘!
[ Programing ]/Database2023. 5. 9. 13:33

MySQL의 프로시져는 return 이 없다.
코드를 구현하다보면 종료가 필요하기 마련인데 LEAVE 를 이용하면 return 과 비슷한 기능을 보여준다.
프로시저 시작하는 BEGIN 앞에 [BLOCK 이름] : 넣어주면 LEAVE [BLOCK이름]; 사용하여 종료할 수 있다.



DELIMITER $$
CREATE PROCEDURE sp_procedure_ex( IN vDoc VARCHAR(13), IN vSequenceID VARCHAR(256) )
BEGIN

     DECLARE iResult INT DEFAULT(0);
     DECLARE iSQLDoc VARCHAR(13);
PROC_RETURN :
BEGIN
     -- BLOCK NAME 설정 (RETURN  유사 기능 처리. LEAVE  -> BREAK  비슷)

     IF NOT CHAR_LENGTH(vDoc) = 13 THEN     -- iDoc의 길이가 13 이지 않으면 반환
          SET iResult = 99999;
          LEAVE PROC_RETURN;
     END IF;
    
     SELECT doc INTO iSQLDoc FROM docTBL WHERE doc = vDoc
     SET @SQL_Query = CONCAT('INSERT INTO sequenceTBL VALUES("', iSQLDoc, '", "', vDoc, '") ');
     PREPARE curQuery FROM @SQL_Query;
     EXECUTE curQuery;
     DEALLOCATE PREPARE curQuery;

     SELECT 0;
END PROC_RETURN;     -- BLOCK NAME 설정 해제. LEAVE PROC_BODY; 이면 여기 이후로 실행.
     IF 0 <> iResult THEN
          SELECT iResult;

     ELSE
          SELECT 0;
     END IF;
END$$
DELIMITER ;




참고 : 
https://artiiicy.tistory.com/15

 

PROCEDURE (프로시져) 도중에 중단하기 (return 0; 사용하기)

프로시져의 조건문에서 프로시져를 미리 마치는 경우 (예외처리가 되는 경우)를 만나게 되면 뒤의 나머지 코드들을 실행하지 않고 곧바로 종료분기를 하고 싶은 경우가 있습니다 즉, C, C++ 등의

artiiicy.tistory.com


https://stormpy.tistory.com/93

 

[MySQL] LEAVE , 프로시저 중에 중단하기

프로시저를 진행 중에 조건을 만족하지 않을 경우 실행을 중단하고 싶은 경우가 있다. 프로시저는 함수처럼 RETURN이 없어서 IF ~ END IF로 조건문으로 감싸서 해결하였는데 LEAVE를 사용하면 쉽게 해

stormpy.tistory.com

 
 

Posted by Mister_Q
[ Programing ]/Database2023. 5. 8. 16:09

- JOIN 아님.
- 단순 데이터 병합. (합집합)
- 2개의 쿼리를 위아래로 이어붙여 출력.
- 열의 개수가 같아야 함.

# UNION : 중복 제거, 정렬, 느림
# UNION ALL : 단순 모두 병합, 빠름

SELECT [COLUMN] 
   FROM [TABLE] 
   WHERE [COLUMN] = [VALUE]
UNION ALL
SELECT [COLUMN] 
   FROM [TABLE] 
   WHERE [COLUMN] = [VALUE];




참조 : https://blog.naver.com/avec_o/222747565180

 

[MySQL] 조인(JOIN)

조인(JOIN) - 한개 이상 테이블로 부터 데이터 조회 - 주로 Primary-Key와 Foreign-Key 관계를 가...

blog.naver.com

 

Posted by Mister_Q
[ Programing ]/Database2023. 5. 8. 11:59

# COALESCE() 
: 주어진 인수에서 첫 번째가 NULL 이 아닌 값을 반환.
> SELECT COALESCE(value1);   
> SELECT COALESCE(value1, value2);
> SELECT COALESCE(value1, value2, value3);

# IFNULL() 
: expr1 값이 NULL이 아니면 expr1 의 값을, NULL 이면 expr2 의 값을 반환.
> SELECT NULLIF(expr1, expr2);
> SELECT NULLIF(max(expr1), expr2);


# NULLIF() 
: IFNULL의 반대. NULL 이면 NULL 그대로 반환한다. 
  expr1 과 expr2 이 같거나 참이면 NULL(또는 1)를 반환하고, 아니면 expr1 를 반환.
> SELECT IFNULL(expr1, expr2);




참고 : 
https://kingscode.tistory.com/340
https://www.habonyphp.com/2019/02/coalesce.html
https://www.habonyphp.com/2019/02/nullif.html

Posted by Mister_Q