아래 Maria DB의 C.R.U.D 예시를 참고하기 바랍니다. 구체적인 MariaDB 사용 방법은 별도 공부 하시길... 참고로 MySQL과 거의 같습니다. 1. Select Procedure # 프로시져명 'PKG_SYS$GET_WH_LIST' 에 PKG_SYS$ 은 오라클과의 호환성을 위해유지 해야함 CREATE DEFINER=`dev`@`%` PROCEDURE `sec_dev`.`PKG_SYS$GET_WH_LIST`( # =================== 사용자 파라미터 IN A_ITEM_KIND VARCHAR(20), # =================== 이하 모든 프로시져에 필수포함 OUT N_RETURN INT, OUT V_RETURN VARCHAR(4000) ) begin DECLARE A_WH_KIND VARCHAR(20); # 내부에 필요한 변수 DECLARE EXIT HANDLER FOR SQLEXCEPTION CALL USP_SYS_GET_ERRORINFO_ALL(V_RETURN, N_RETURN); # 예기치않은 오류가 발생했을때 처리 # ====================== 조회하는 sql SELECT A.PLANT, A.WH_ID, A.WH_CD, A.WH_NM, ... A.MODI_KEY # ========== 화면에서 update나 delete가 수반된다면 필수 포함 FROM WH_MST A INNER JOIN sys_data b ON a.WH_KIND = b.data_id WHERE b.FULL_PATH LIKE concat('%',A_ITEM_KIND, '%') AND A.USE_YN = 'Y'; # 조회 결과를 호출한 Client에 돌려주는 out 변수 SET N_RETURN = 0; SET V_RETURN = '조회 되었습니다.'; end 2. Insert Procedure CREATE DEFINER=`app`@`%` PROCEDURE `sec_dev`.`PKG_SYS$SET_PROG_INSERT`( INOUT A_PROG_ID BIGINT # ========== 채번값을 돌려주기 위한 INOUT 파라미터 IN A_CODE VARCHAR(100), IN A_NAME VARCHAR(100), IN A_KIND DECIMAL, IN A_A_ADD INT, IN A_A_DELETE INT, IN A_A_SAVE INT, IN A_A_PRINT INT, IN A_USE_YN CHAR(1), IN A_USER_ID DECIMAL, #======== 로그인한 사용자의 ID 필수 # ================================== 아래 필수 OUT N_RETURN INT, OUT V_RETURN VARCHAR(4000) ) PROC:BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SET N_RETURN = -1; CALL USP_SYS_GET_ERRORINFO(V_RETURN); END; SET N_RETURN = -1; SET V_RETURN = '저장에 실패 하였습니다.'; SET A_PROG_ID = NEXTVAL(sq_com); 필수키에 대한 채번 INSERT INTO SYS_PROG (PROG_ID, CODE, NAME, KIND, A_ADD, A_DELETE, A_SAVE, A_PRINT, USE_YN, INSERT_ID, UPDATE_ID, MODI_KEY) SELECT A_PROG_ID, A_CODE, A_NAME, A_KIND, A_A_ADD, A_A_DELETE, A_A_SAVE, A_A_PRINT, A_USE_YN, A_USER_ID, A_USER_ID, 0; # ===================================== 저장에 성고한 행의 갯수를 파악하여 0 이면 오류(Rollback)처리 if ROW_COUNT () > 0 then SET N_RETURN = 0; SET V_RETURN = '저장 성공'; else LEAVE PROC; # ==================== N_RETURN의 값이 0 이 아닌상태에서 프로시져를 종료하게 되면 RollBack됨. end if; END 3. Udate Procedure CREATE DEFINER=`app`@`%` PROCEDURE `sec_dev`.`PKG_SYS$SET_PROG_UPDATE`( IN `A_PROG_ID` DECIMAL, IN `A_CODE` VARCHAR(30), IN `A_NAME` VARCHAR(200), IN `A_KIND` DECIMAL, IN `A_A_ADD` CHAR(1), IN `A_A_DELETE` CHAR(1), IN `A_A_SAVE` CHAR(1), IN `A_A_PRINT` CHAR(1), IN `A_USE_YN` CHAR(1), # ====================================== 아래 필수요소 IN `A_MODI_KEY` DECIMAL, IN `A_USER_ID` DECIMAL, OUT `N_RETURN` INT, OUT `V_RETURN` VARCHAR(4000) ) PROC:BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SET N_RETURN = -1; CALL USP_SYS_GET_ERRORINFO(V_RETURN); END; SET N_RETURN = -1; SET V_RETURN = '저장에 실패 하였습니다.'; UPDATE SYS_PROG SET NAME = A_NAME, KIND = A_KIND, CODE = A_CODE, A_ADD = A_A_ADD, A_DELETE = A_A_DELETE, A_SAVE = A_A_SAVE, A_PRINT = A_A_PRINT, USE_YN = A_USE_YN, UPDATE_ID = A_USER_ID, # ========== 업데이트하는 사용자를 명시한다. UPDATE_DT = NOW(), # ========== 업데이트 시각 MODI_KEY = MODI_KEY + 1 # ========== 업데이트된 카운트 WHERE PROG_ID = A_PROG_ID AND MODI_KEY = A_MODI_KEY; # ========== 조회당시 테이블의 업데이트 횟수를 가져와 # 그 사이 다른 프로그램에 의해 업데이트된 이력이 있는지 확인하고 # 그렇다면 오류처리하기 위해 IF ROW_COUNT () = 0 THEN SET N_RETURN = -1; LEAVE PROC; END IF; SET N_RETURN = 0; SET V_RETURN = '저장 성공'; END 4. Delete Procedure CREATE DEFINER=`root`@`%` PROCEDURE `sec_dev`.`PKG_EMPL018$SET_INSA_DAY_INOUT_DELETE`( IN A_COMP_ID varchar(10), IN A_OID bigint(20), # =================================== 이하 필수 요소 IN A_USER_ID BIGINT, IN A_MODI_KEY bigint(20), OUT N_RETURN INT, OUT V_RETURN VARCHAR(4000) ) begin DECLARE EXIT HANDLER FOR SQLEXCEPTION CALL USP_SYS_GET_ERRORINFO_ALL(V_RETURN, N_RETURN); SET N_RETURN = 0; SET V_RETURN = '삭제되었습니다.'; UPDATE insa_day_inout set DELETE_YN = 'Y', UPDATE_ID = A_UPDATE_ID, # ====== 삭제한 사용자 UPDATE_DT = NOW(), # ====== 삭제 일시 MODI_KEY = MODI_KEY + 1 # ====== 업데이트 카운트 where COMP_ID = A_COMP_ID and OID = A_OID # =================== Table 키 and MODI_KEY = A_MODI_KEY; # ========== 조회당시의 업데이트 카운트 IF ROW_COUNT() = 0 THEN SET N_RETURN = -1; SET V_RETURN = '삭제에 실패하였습니다. \n\r\n\r 조회된 데이터가 변경되었습니다. 다시 조회후 삭제하세요'; END IF; END [[database_crud|↑ 상위로 가기]]