DELIMITER $$ DROP PROCEDURE IF EXISTS `WebProtocol_User_C`$$ CREATE PROCEDURE `WebProtocol_User_C`( IN i_user_no BIGINT UNSIGNED , IN i_pass_wd VARCHAR(100) , OUT o_sp_rtn INT , OUT o_rtn_message VARCHAR(100) ) BEGIN /****************************************************************************** Name : WebProtocol_User_C Description : 유저 생성하기 Ver 1.0 Return : 0 = 등록성공 -1 = 유저생성에 실패했습니다. -998 = 중복키 오류가 발생 했습니다. Example : SET @i_user_no := 30 -- 유저번호 , @i_pass_wd := 'asds' -- 패스워드 , @o_sp_rtn := -1 , @o_rtn_message := '' ; CALL WebProtocol_User_C( @i_user_no , @i_pass_wd , @o_sp_rtn , @o_rtn_message ); SELECT @o_sp_rtn , @o_rtn_message SELECT * FROM User_0 WHERE user_no = 30; Reference : History : Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 2013-12-31 LEE yh 1. Create. ******************************************************************************/ DECLARE v_effect_row INT DEFAULT 0; DECLARE v_error_number INT DEFAULT 0; DECLARE v_row_count INT DEFAULT 0; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SELECT -999 INTO o_sp_rtn; SELECT 'SQL 내부 오류' INTO o_rtn_message; END; DECLARE EXIT HANDLER FOR 1062 /* Duplicate key*/ BEGIN ROLLBACK; SELECT -998 INTO o_sp_rtn; SELECT '중복키 오류가 발생 했습니다.' INTO o_rtn_message; END; FLOW_START: BEGIN DECLARE v_group_no TINYINT DEFAULT 0; -- STEP 1. 필요한 정보를 가져와 변수에 담는다 -- SELECT -- 칼럼 -- INTO -- v_변수 -- FROM 테이블 -- WHERE 조건 -- STEP 2. 유저정보 등록 SET v_group_no = RIGHT(i_user_no,1); SET @v_sql := ''; SET @v_table_name := ''; SET @v_table_name := 'USER_'; SET @v_table_name := CONCAT(@v_table_name,v_group_no); SET @v_sql := ' INSERT INTO @p_table_name ( user_no , pass_wd ) VALUES ( ? , ? ) '; SET @v_sql := REPLACE(@v_sql,'@p_table_name',@v_table_name); SET @v_user_no := i_user_no; SET @v_pass_wd := i_pass_wd; START TRANSACTION; PREPARE stmt FROM @v_sql; EXECUTE stmt USING @v_user_no,@v_pass_wd; SELECT ROW_COUNT() INTO v_effect_row; DEALLOCATE PREPARE stmt; IF (v_effect_row=0) THEN ROLLBACK; SELECT -1 INTO o_sp_rtn; SELECT '유저 생성에 실패했습니다.' INTO o_rtn_message; LEAVE FLOW_START; END IF; COMMIT; SELECT 0 INTO o_sp_rtn; SELECT '등록성공' INTO o_rtn_message; END; -- FLOW_START: END$$ DELIMITER ;