MySQL 저장 프로시저에서 전달된 변수가 NULL이거나 빈 문자열('')인지 확인하려면 IF 조건문을 사용하면 됩니다. 이 글에서는 NULL 또는 빈 값을 검사하는 저장 프로시저를 직접 만들어 보고, 실제 호출 예제를 통해 동작 과정을 단계별로 살펴보겠습니다.
저장 프로시저 생성하기
아래와 같이 IF 조건문으로 Name 변수가 NULL이거나 빈 문자열인지 검사하는 저장 프로시저를 작성합니다. 조건에 해당하면 기본값인 'Adam Smith'를 반환하고, 그렇지 않으면 입력받은 이름을 그대로 출력합니다.
mysql> delimiter //
mysql> create procedure checkingForNullDemo(Name varchar(20))
begin
if Name is NULL OR Name='' then
select 'Adam Smith';
else
select Name;
end if ;
end
//
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
프로시저가 정상적으로 생성되었다면, 두 가지 경우로 나누어 테스트해 보겠습니다.
Case 1: NULL 값 전달 시
먼저 변수에 NULL을 전달하여 CALL 명령으로 저장 프로시저를 호출합니다.
mysql> call checkingForNullDemo(NULL);
실행 결과는 다음과 같습니다.
+------------+
| Adam Smith |
+------------+
| Adam Smith |
+------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Name이 NULL이므로 IF 조건이 참이 되어, ELSE 블록 대신 기본값인 'Adam Smith'가 출력됩니다.
Case 2: 일반 값 전달 시
이번에는 정상적인 문자열 값을 전달하여 저장 프로시저를 호출합니다.
mysql> call checkingForNullDemo('John Doe');실행 결과는 다음과 같습니다.
+----------+
| Name |
+----------+
| John Doe |
+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
입력값이 NULL도 아니고 빈 문자열도 아니기 때문에 ELSE 블록이 실행되어, 전달한 이름이 그대로 출력됩니다.
정리
이처럼 저장 프로시저 내부에서 IF 변수 IS NULL OR 변수 = '' THEN 형태의 조건문을 활용하면 NULL과 빈 문자열을 한 번에 처리할 수 있습니다. 사용자 입력값 검증이나 기본값 처리 로직을 구현할 때 매우 유용하게 사용할 수 있으니, 실무에서 파라미터 유효성 검사가 필요할 때 참고해 보시기 바랍니다.