사용자 도구

사이트 도구


mariadb설명

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
mariadb설명 [2025/07/06 05:10] adminmariadb설명 [2025/12/06 07:26] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
-  - Select Procedure+    아래 Maria DB의 C.R.U.D 예시를 참고하기 바랍니다. 
 +    구체적인 MariaDB 사용 방법은 별도 공부 하시길... 
 +    참고로 MySQL과 거의 같습니다.
  
-    CREATE DEFINER=`root`@`%` PROCEDURE `sec_dev`.`PKG_SYS$GET_WH_LIST`(  +1. Select Procedure 
- in A_ITEM_KIND VARCHAR(20), + 
- OUT N_RETURN INT, + 
- OUT V_RETURN VARCHAR(4000) +  # 프로시져명 '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     begin
- declare A_WH_KIND VARCHAR(20);+         
 +        DECLARE A_WH_KIND VARCHAR(20); # 내부에 필요한 변수
   
- DECLARE EXIT HANDLER FOR SQLEXCEPTION  +        DECLARE EXIT HANDLER FOR SQLEXCEPTION  
- CALL USP_SYS_GET_ERRORINFO_ALL(V_RETURN, N_RETURN); +          CALL USP_SYS_GET_ERRORINFO_ALL(V_RETURN, N_RETURN);  # 예기치않은 오류가 발생했을때 처리
   
- select  +        # ======================  조회하는 sql 
- A.PLANT, +        SELECT 
- A.WH_ID, +           A.PLANT, 
- A.WH_CD, +           A.WH_ID, 
- A.WH_NM, +           A.WH_CD, 
- A.LOCATION, +           A.WH_NM, ... 
- A.WH_KIND, +           A.MODI_KEY        # ========== 화면에서 update나 delete가 수반된다면 필수 포함 
- A.USE_YN, +        FROM WH_MST A 
- A.INSERT_ID, +           INNER JOIN sys_data b ON a.WH_KIND = b.data_id 
- A.INSERT_DT, +        WHERE  b.FULL_PATH LIKE concat('%',A_ITEM_KIND, '%'
- A.UPDATE_ID, +          AND A.USE_YN = 'Y';
- A.UPDATE_DT, +
- A.MODI_KEY +
- 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';+
   
- SET N_RETURN = 0; +        # 조회 결과를 호출한 Client에 돌려주는 out 변수 
-        SET V_RETURN = '조회되었습니다.';+        SET N_RETURN = 0; 
 +        SET V_RETURN = '조회 되었습니다.';
     end     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 = '저장에 실패 하였습니다.';
          
-  - Insert Procedure +    SET A_PROG_ID = NEXTVAL(sq_com); 필수키에 대한 채번 
-  Udate Procedure +     
-  - Delete Procedure+    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|↑ 상위로 가기]]
mariadb설명.1751778624.txt.gz · 마지막으로 수정됨: (바깥 편집)