convert to gitea
This commit is contained in:
68
db/procedures/sp_update_group.sql
Normal file
68
db/procedures/sp_update_group.sql
Normal file
@ -0,0 +1,68 @@
|
||||
DELIMITER $$
|
||||
|
||||
SET @saved_sql_mode = @@sql_mode
|
||||
$$
|
||||
SET @@sql_mode = 'NO_AUTO_VALUE_ON_ZERO'
|
||||
$$
|
||||
CREATE PROCEDURE `sp_update_group`(
|
||||
IN p_admin_user_id INT,
|
||||
IN p_actor_description VARCHAR(100),
|
||||
IN p_group_id BIGINT,
|
||||
IN p_group_name VARCHAR(100),
|
||||
IN p_manager_user_id BIGINT, -- 파라미터명 변경됨
|
||||
OUT p_result_message VARCHAR(255)
|
||||
)
|
||||
COMMENT '그룹(부서) 정보 수정 및 로그 기록'
|
||||
BEGIN
|
||||
DECLARE v_old_group_name VARCHAR(100);
|
||||
DECLARE v_old_manager_user_id BIGINT; -- 변수명 변경됨
|
||||
DECLARE v_existing_group_id BIGINT DEFAULT NULL;
|
||||
DECLARE v_now DATETIME DEFAULT NOW();
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
|
||||
ROLLBACK; SET p_result_message = CONCAT('DB 오류 (', @errno, '): ', @text);
|
||||
END;
|
||||
|
||||
-- 입력값 검증
|
||||
IF p_admin_user_id IS NULL AND p_actor_description IS NULL THEN
|
||||
SET p_result_message = '작업 주체 정보는 필수입니다.';
|
||||
ELSEIF p_group_name IS NULL OR p_group_name = '' THEN
|
||||
SET p_result_message = '그룹(부서) 이름은 필수입니다.';
|
||||
ELSE
|
||||
-- 기존 정보 조회 및 존재 확인
|
||||
SELECT group_name, manager_user_id INTO v_old_group_name, v_old_manager_user_id -- 컬럼명/변수명 변경
|
||||
FROM group_info WHERE group_id = p_group_id;
|
||||
IF v_old_group_name IS NULL THEN
|
||||
SET p_result_message = CONCAT('수정할 그룹(부서)을 찾을 수 없습니다 (ID: ', p_group_id, ')');
|
||||
ELSE
|
||||
-- 그룹 이름 중복 검사 (자기 자신 제외)
|
||||
SELECT group_id INTO v_existing_group_id
|
||||
FROM group_info WHERE LOWER(group_name) = LOWER(p_group_name) AND group_id != p_group_id LIMIT 1;
|
||||
IF v_existing_group_id IS NOT NULL THEN
|
||||
SET p_result_message = CONCAT('이미 다른 그룹(부서)에서 사용 중인 이름입니다: ', p_group_name);
|
||||
ELSE
|
||||
-- 모든 검증 통과, 트랜잭션 시작
|
||||
START TRANSACTION;
|
||||
UPDATE group_info SET
|
||||
group_name = p_group_name,
|
||||
manager_user_id = p_manager_user_id -- 컬럼명/파라미터명 변경
|
||||
WHERE group_id = p_group_id;
|
||||
|
||||
INSERT INTO log_update_group (log_date, admin_user_id, actor_description, group_id,
|
||||
old_group_name, old_manager_user_id, -- 컬럼명 변경
|
||||
new_group_name, new_manager_user_id) -- 컬럼명 변경
|
||||
VALUES (v_now, p_admin_user_id, p_actor_description, p_group_id,
|
||||
v_old_group_name, v_old_manager_user_id, -- 변수명 변경
|
||||
p_group_name, p_manager_user_id); -- 파라미터명 변경
|
||||
COMMIT;
|
||||
SET p_result_message = CONCAT('그룹(부서) (ID: ', p_group_id, ') 정보 수정 완료.');
|
||||
END IF; -- 그룹 이름 중복 IF 종료
|
||||
END IF; -- 그룹 존재 IF 종료
|
||||
END IF; -- 입력값 검증 IF 종료
|
||||
|
||||
END
|
||||
$$
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user