Oracle Database
형변환
For Loop
If 문
Insert 문에 valuse 대신 Select 문 사용
[1]
CREATE OR REPLACE PROCEDURE GMES.SP_EDU_DAY_KIM
(P_EMP_NAME IN VARCHAR2)
IS
V_START_TIME VARCHAR2(4);
V_END_TIME VARCHAR2(4);
V_AAA VARCHAR2(20);
V_SUM_TIME NUMBER ;
BEGIN
V_START_TIME := '0830';
V_END_TIME := '1730';
FOR C1 IN (SELECT TO_CHAR(YMD_DATE,'d') DD,YMD_DATE FROM COPY_YMD
WHERE YMD_DATE NOT IN (SELECT YMD_DATE
FROM
(SELECT YMD,YMD_DATE
FROM COPY_YMD
WHERE YMD BETWEEN '20200601' AND '20200630'
) B
WHERE TO_CHAR(YMD_DATE,'d') IN (1,4,7) OR YMD = '20200605')
AND YMD BETWEEN '20200601' AND '20200630')
LOOP
V_SUM_TIME := (TO_DATE(TO_CHAR(C1.YMD_DATE, 'YYYY-MM-DD') || V_END_TIME || '00', 'YYYY-MM-DD HH24:MI:SS')
- TO_DATE(TO_CHAR(C1.YMD_DATE, 'YYYY-MM-DD') || V_START_TIME || '00', 'YYYY-MM-DD HH24:MI:SS')) * 24 ;
IF C1.DD = 2 THEN
V_AAA := '월요일';
ELSIF C1.DD = 3 THEN
V_AAA := '화요일';
ELSIF C1.DD = 5 THEN
V_AAA := '목요일';
ELSIF C1.DD = 6 THEN
V_AAA := '금요일';
END IF;
INSERT INTO EDU_DAY (EDU_NAME,YMD_DATE,DAY_WEEK,START_TIME,END_TIME,SUM_TIME)
VALUES (P_EMP_NAME,C1.YMD_DATE,V_AAA,V_START_TIME,V_END_TIME,V_SUM_TIME);
END LOOP;
END;
[2]
CREATE OR REPLACE PROCEDURE GMES.SP_EDU_DAY_SEO
(P_NAME IN VARCHAR2)
IS
V_START_TIME VARCHAR2(4);
V_END_TIME VARCHAR2(4);
BEGIN
V_START_TIME := '0830';
V_END_TIME := '1730';
FOR C1 IN (SELECT YMD_DATE,
CASE WHEN TO_CHAR(YMD_DATE, 'd') = '2' THEN '월요일'
WHEN TO_CHAR(YMD_DATE, 'd') = '3' THEN '화요일'
WHEN TO_CHAR(YMD_DATE, 'd') = '4' THEN '수요일'
WHEN TO_CHAR(YMD_DATE, 'd') = '5' THEN '목요일'
WHEN TO_CHAR(YMD_DATE, 'd') = '6' THEN '금요일'
WHEN TO_CHAR(YMD_DATE, 'd') = '7' THEN '토요일'
WHEN TO_CHAR(YMD_DATE, 'd') = '1' THEN '일요일'
END AS DAY_WEEK
FROM COPY_YMD
WHERE YMD BETWEEN '20200601' AND '20200630'
AND YMD_DATE NOT IN (SELECT YMD_DATE
FROM EDU_HOLIDAY
WHERE EDU_NAME = '서은주'))
LOOP
INSERT INTO EDU_DAY (EDU_NAME, YMD_DATE, DAY_WEEK, START_TIME, END_TIME, SUM_TIME)
VALUES (P_NAME, C1.YMD_DATE, C1.DAY_WEEK, V_START_TIME, V_END_TIME
, (TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || V_END_TIME || '00', 'YYYY-MM-DD HH24:MI:SS')
- TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || V_START_TIME || '00', 'YYYY-MM-DD HH24:MI:SS')) * 24
);
END LOOP;
END;
'IT 끄적이기 > 업무(SeAH - MES)' 카테고리의 다른 글
| #14, 이벤트 4가지(C#, DataGrid of DevExpress, SiSFramework) (0) | 2020.05.25 |
|---|---|
| #13, BT정정/소형압연/제품관리 (0) | 2020.05.21 |
| # 쿼리예제, SUBSTR (0) | 2020.05.17 |
| # 12, 프로시저와 함수 (0) | 2020.05.17 |
| #11, PL/SQL (0) | 2020.05.17 |