We have created a awesome theme
Far far away,behind the word mountains, far from the countries

INFO ½ÇÀü DB¸ðµ¨¸µ°ú SQL°úÁ¤

INFO

½ÇÀü DB¸ðµ¨¸µ°ú SQL°úÁ¤
Á¶È¸¼ö 361
Á¦¸ñ Chapter5_DBObject : ¿¹Á¦¸ðÀ½2
ÀÛ¼ºÀÚ °ü¸®ÀÚ
ÀÛ¼ºÀÏÀÚ 2021-12-03

¡á¿¹ 5_2_1  ||  ÇÁ·Î½ÃÀú »ý¼º ¿¹Á¦
CREATE OR REPLACE PROCEDURE salary_inc (v_sabun  IN  VARCHAR2)
IS
BEGIN
UPDATE INSA
SET SALARY=SALARY*1.03
WHERE SABUN=v_sabun;
COMMIT;
EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('register is failed!');
    ROLLBACK;
END;
/



¡á¿¹ 5_2_2  ||  ÇÁ·Î½ÃÀú »ý¼º ¿¹Á¦
CREATE OR REPLACE PROCEDURE in_sa(v_NAME  IN  VARCHAR2,  v_RGL  IN VARCHAR2)
IS
v_SABUN INSA.SABUN %TYPE;
BEGIN
INSERT INTO INSA(SABUN, NAME, JOIN_GBN_CODE, JOIN_DAY)
VALUES((____SELECT /*+ INDEX_DESC(INSA INSA_PK) */
                     DECODE(SUBSTR(SABUN,1,8)
                    ,TO_CHAR(SYSDATE,'YYYYMMDD'),SABUN+1
                    ,TO_CHAR(SYSDATE,'YYYYMMDD')||'01')
        FROM INSA
        WHERE SABUN < TO_CHAR(SYSDATE,'YYYYMMDD')||'99'
          AND ROWNUM=1), v_NAME, v_RGL, TO_CHAR(SYSDATE,'YYYYMMDD'));

COMMIT;
EXCEPTION WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('FAIL!');
  ROLLBACK;
END;
/



¡á¿¹ 5_2_3  ||  ÇÁ·Î½ÃÀú ½ÇÇà
EXEC  in_sa ('±è¹Î±â', 'RGL')

SELECT  SABUN,  NAME,  JOIN_GBN_CODE,  JOIN_DAY  FROM  INSA
ORDER  BY  SABUN  DESC;



¡á¿¹ 5_2_4  ||  OUT º¯¼ö¸¦ ÀÌ¿ëÇÏ´Â ÇÁ·Î½ÃÀú »ý¼º
CREATE OR REPLACE PROCEDURE workPm
(v_SABUN  IN  INSA.SABUN %TYPE,
 v_name OUT INSA.ENG_NAME%TYPE,
 v_cdname OUT CMM_CODE_DETAIL.CODE_NAME%TYPE,
 v_m OUT INSA.JOIN_DAY%TYPE)
IS
BEGIN
SELECT T1.ENG_NAME, T2.CODE_NAME,
       ROUND(MONTHS_BETWEEN(SYSDATE, TO_DATE(JOIN_DAY,'YYYYMMDD')))
AS MON_WORK
  INTO v_name, v_cdname, v_m      
  FROM INSA T1, CMM_CODE_DETAIL T2
  WHERE T1.POS_GBN_CODE = T2.CODE_NO
  AND T1.SABUN=v_SABUN;
 
DBMS_OUTPUT.PUT_LINE(v_name||'--'||v_cdname||'--'||v_m);

EXCEPTION WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('Á¶È¸ÇÏ·Á´Â »ç¹øÀÌ Á¸ÀçÇÏÁö ¾ÊÀ½!');

END workPm;
/



¡á¿¹ 5_2_5  ||  ÀÍ¸í ºí·Ï PL/SQL »ý¼º
DECLARE
v_name INSA.ENG_NAME%TYPE;
v_cdname CMM_CODE_DETAIL.CODE_NAME%TYPE;
v_m INSA.JOIN_DAY%TYPE;
BEGIN

workPm('2012010119', v_name, v_cdname, v_m);
DBMS_OUTPUT.PUT_LINE('À̸§ :'||v_name||' Á÷±Þ :'||v_cdname||' ±Ù¹«¿ù¼ö :'||v_m||'°³¿ù');

END;
/



¡á¿¹ 5_2_6  ||  ÇÁ·Î½ÃÀú È®ÀÎ
SELECT * FROM USER_PROCEDURES;



¡á¿¹ 5_2_7  ||  »ý¼ºµÈ PL/SQL °´Ã¼ ³»¿ë Á¶È¸
SELECT * FROM____ USER_SOURCE;

÷ºÎÆÄÀÏ