PL/SQL ¿£Áø°ú ¿À¶óŬ ¼­¹ö

PL/SQLÀº ¿À¶óŬ ¼ÒÀ¯±ÇÀÇ Á¦Ç°Àº ¾Æ´Ï°í, ¿À¶óŬ ¼­¹ö¿Í ¿À¶óŬ Åø¿¡ µµÀÔµÈ ±â¼úÀÔ´Ï´Ù. PL/SQLÀÇ ºí·ÏÀÌ PL/SQL ¿£Áø¿¡ ³Ñ°ÜÁö°í 󸮵˴ϴÙ. »ç¿ëµÉ ¿£ÁøÀº PL/SQL ºí·ÏÀÌ ¾îµð¿¡¼­ ºÒ¸®¾îÁö´Â°¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù.

PL/SQL ºí·ÏÀ» Pro* program, »ç¿ëÀÚ-exit, SQL*Plus, ¼­¹ö °ü¸®ÀÚ µîÀ¸·ÎºÎÅÍ º¸³»°Ô µÇ¸é ¿À¶óŬ ¼­¹ö¿¡ ÀÖ´Â PL/SQL ¿£ÁøÀÌ Ã³¸®¸¦ ÇÕ´Ï´Ù.±×¸®°í ³ª¼­ ±× ¿£ÁøÀº ºí·Ï³»ÀÇ SQLÀ» °¢°¢ÀÇ ¹®ÀåÀ¸·Î ºÐ¸®½ÃÄÑ SQL ¹®Àå ½ÇÇà±â·Î ³Ñ±é´Ï´Ù. Áï ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ¿À¶óŬ ¼­¹ö·Î ºí·ÏÀ» ¼Û½ÅÇϱâ À§Çؼ­ ´ÜÀÏ Àü¼Û¸¸ÀÌ ÇÊ¿äÇÏ´Ù´Â ÀǹÌÀ̸ç,   ÀÌ·¸°Ô   ÇÔÀ¸·Î½á ƯÈ÷ Ŭ¶óÀ̾ðÆ®-¼­¹ö ³×Æ®¿öÅ©¿¡¼­ ¼º´ÉÀ» Çâ»ó ½Ãų ¼ö ÀÖ½À´Ï´Ù.   ³»ÀåµÈ ¼­ºêÇÁ·Î±×·¥µµ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÈ ÀÀ¿ëÇÁ·Î±×·¥µé¿¡ ÀÇÇØ ÂüÁ¶°¡ µÇ¾îÁý´Ï´Ù.
 

¼º´É Çâ»ó

PL/SQLÀº ¾îÇø®ÄÉÀ̼ÇÀÇ ¼º´ÉÀ» Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀåÁ¡Àº ½ÇÇà ȯ°æ¿¡ µû¶ó Â÷ÀÌ°¡ ÀÖ½À´Ï´Ù.

ÁÖ: Developer ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÏºÎ·Î½á ¼±¾ðµÈ ÇÁ·Î½ÃÀú¿Í ÇÔ¼ö´Â µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ ÇÁ·Î½ÃÀú ÇÔ¼ö¿Í ´Ù¸£Áö¸¸ ±× ÀϹÝÀûÀÎ ±¸Á¶´Â µ¿ÀÏÇÕ´Ï´Ù. ³»ÀåµÈ ¼­ºê ÇÁ·Î±×·¥Àº µ¥ÀÌÅͺ£À̽º °´Ã¼ÀÌ¸ç µ¥ÀÌÅÍ »çÀü¿¡ ÀúÀåµË´Ï´Ù. ±×°ÍµéÀº Developer ¾îÇø®ÄÉÀ̼ÇÀ» ºñ·ÔÇÑ ¸¹Àº ¾îÇø®°ÔÀ̼ǿ¡ ÀÇÇØ ¾×¼¼½º µÉ ¼ö ÀÖ½À´Ï´Ù.

 

PL/SQL ºí·Ï ±¸Á¶

   PL/SQLÀº ÇÁ·Î±×·¥À» ³í¸®ÀûÀÎ ºí·ÏÀ¸·Î ³ª´©°Ô ÇÏ´Â ±¸Á¶È­µÈ ºí·Ï ¾ð¾îÀÔ´Ï´Ù.    PL/SQL ºí·ÏÀº 3 ¼½¼Ç±îÁö·Î ±¸¼ºµË´Ï´Ù: ¼±¾ð (¼±ÅÃÀû), ½ÇÇà (ÇʼöÀû),   ¿¹¿Üó¸®    (¼±ÅÃÀû).  BEGIN°ú END Å°¿öµå¸¸ ÇʼöÀûÀÔ´Ï´Ù.  º¯¼öµéÀ» »ç¿ëÇÏ´Â  ºí·Ï¿¡  ´ëÇØ    ³í¸®ÀûÀ¸·Î ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À·ùÁ¶°Ç (¿¹¿Ü·Î ¾Ë·ÁÁø) Àº ºí·Ï ³»¿¡¼­ Ưº°ÇÏ°Ô    Ã³¸®µÉ ¼ö ÀÖ½À´Ï´Ù. º¯¼öµé°ú  ±× ¿ÜÀÇ ½Äº°ÀÚ¸¦ ÂüÁ¶ÇÏ°í ¼±¾ðÇÔÀ¸·Î½á PL/SQL ºí·Ï    ³»¿¡¼­ °ªÀ» ÀúÀåÇÏ°í º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
   
   ¾Æ·¡ Å×À̺íÀº 3°¡Áö ºí·Ï ¼½¼ÇÀ» ±â¼úÇÕ´Ï´Ù.
 

¼½         ¼Ç

¼³        ¸í 

Æ÷     ÇÔ

¼±          ¾ð

½ÇÇà°ú ¼±¾ð ¼½¼Ç¿¡¼­ ÂüÁ¶µÇ´Â ¸ðµç º¯¼ö, »ó¼ö,Ä¿¼­, »ç¿ëÀÚ Á¤ÀÇ ¿¹¿Ü¸¦ Æ÷ÇÔÇÕ´Ï´Ù. 

¼±ÅÃÀû

½Ç          Çà

µ¥ÀÌÅͺ£À̽º ³»ÀÇ µ¥ÀÌÅ͸¦ Á¶ÀÛÇϱâ À§ÇÑ SQL ¸í·É¹®°ú, ºí·Ï¿¡¼­ µ¥ÀÌÅ͸¦ Á¶ÀÛÇϱâ À§ÇÑ PL/SQL ¸í·É¹®À» Æ÷ÇÔÇÕ´Ï´Ù. 

ÇʼöÀû

¿¹¿Üó¸®

½ÇÇà ¼½¼Ç¿¡¼­ ¿À·ù ¶Ç´Â ºñÁ¤»óÀûÀÎ Á¶°ÇÀÌ ¹ß»ýÇÒ ¶§ ¼öÇàÇϱâ À§ÇÑ ÀÛ¾÷À» ÁöÁ¤ÇÕ´Ï´Ù. 

¼±ÅÃÀû

 

 

  PL/SQL procedure successfully completed

 

PL/SQLÀÇ ¸ðµç ´ÜÀ§´Â Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ ºí·ÏÀ» Æ÷ÇÔÇÕ´Ï´Ù.ÀÌ ºí·ÏÀº ´Ù¸¥ °ÍÀ¸·Î  ºÎÅÍ Çϳª·Î ¿ÏÀüÈ÷ ºÐ¸®µÇ°Å³ª ÁßøµÉ ¼ö ÀÖ½À´Ï´Ù. ±âº» ´ÜÀ§(ÇÁ·Î½ÃÀú¿Í ÇÔ¼ö, ¶Ç´Â  ¼­ºêÇÁ·Î±×·¥, ±×¸®°í À͸íÀÇ ºí·Ï)´Â ÀÓÀÇÀÇ ¼öÀÇ ÁßøµÈ ¼­ºêºí·ÏÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Â,  ³í¸®Àû  ºí·ÏÀÎ PL/SQL ÇÁ·Î±×·¥À» ±¸¼ºÇÕ´Ï´Ù. ±×·¯¹Ç·Î ÇÑ ºí·ÏÀº ´Ù¸¥ ºí·ÏÀÇ ÀÛÀº  ºÎºÐÀÌ µÇ±âµµ ÇÏ°í ¶Ç´Â ÄÚµå ´ÜÀ§ÀÇ Àüü Áß ÀϺΰ¡ µÉ ¼öµµ ÀÖ½À´Ï´Ù. PL/SQLÀÇ 2°¡Áö  ÇüÅÂÀÎ, ÀÍ¸í ºí·Ï°ú ¼­ºêÇÁ·Î±×·¥ Áß À͸íÀÇ ºí·Ï¸¸ º» °úÁ¤¿¡¼­ ¼³¸íÇÕ´Ï´Ù.  

ÀÍ¸í ºí·Ï

  ÀÍ¸í ºí·ÏÀº À̸§ÀÌ ¾ø´Â ºí·ÏÀÔ´Ï´Ù.   ±×°ÍÀº ½ÇÇàµÇ±â  À§ÇÑ  ¾îÇø® ÄÉÀÌ¼Ç   ¾È¿¡¼­   ¼±¾ðµÇ°í ½ÇÇà½Ã°£ Áß¿¡ ½ÇÇàÀ» À§ÇØ PL/SQL ¿£ÁøÀ¸·Î Àü´ÞµË´Ï´Ù.     ¼±ÇàÄÄÆÄÀÏ·¯   ÇÁ·Î±×·¥°ú SQL*Plus¶Ç´Â ¼­¹ö °ü¸®ÀÚ¿¡¼­ À͸íÀÇ ºí·ÏÀ» ³»ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.

¼­ºêÇÁ·Î±×·¥

  ¼­ºêÇÁ·Î±×·¥Àº ¸Å°³º¯¼ö¸¦ ÃëÇÒ ¼ö ÀÖ°í È£ÃâÇÒ ¼ö ÀÖ´Â À̸§ÀÖ´Â PL/SQL ºí·ÏÀÔ´Ï´Ù.
  ÇÁ·Î½ÃÀú ¶Ç´Â ÇÔ¼ö·Î ¼±¾ðµÉ ¼ö ÀÖ½À´Ï´Ù.   ÀϹÝÀûÀ¸·Î  ¾î¶²  ÀÛ¾÷À»  ¼öÇàÇÏ±â  À§ÇØ   ÇÁ·Î½ÃÀú¸¦ »ç¿ëÇÏ°í, °ªÀ» °è»êÇϱâ À§ÇØ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ¼­¹ö ¶Ç´Â ¾îÇø®ÄÉÀÌ¼Ç   ¼öÁØ¿¡¼­ ¼­ºêÇÁ·Î±×·¥À» ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. Developer/2000 ÄÄÆ÷³ÍÆ®(Forms,   Reports, Graphics)¸¦ »ç¿ëÇÏ¿© ¾îÇø®ÄÉÀ̼Ç(Forms¶Ç´Â Reports)ÀÇ ÀϺημ­ ÇÔ¼ö¿Í   ÇÁ·Î½ÃÀú¸¦ ¼±¾ðÇÒ ¼ö ÀÖ°í ÇÊ¿äÇÒ ¶§¸¶´Ù µ¿ÀÏ ¾îÇø®ÄÉÀ̼ÇÀÇ Æ®¸®°Å  (´ÙÀ½ÆäÀÌÁö¸¦   º¸½Ê½Ã¿À.), ÇÔ¼ö, ´Ù¸¥ ÇÁ·Î½ÃÀú¿¡¼­ ±×°ÍµéÀ» È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
  
  ÁÖ: ÇÔ¼ö´Â °ªÀ» ¹ÝȯÇØ¾ß ÇÔÀ» Á¦¿ÜÇÏ°í´Â ÇÁ·Î½ÃÀú¿Í µ¿ÀÏÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú¿Í ÇÔ¼ö´Â   ´ÙÀ½ PL/SQL °úÁ¤¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

.

¾Æ·¡ Å×À̺íÀº ±âº» PL/SQL ºí·ÏÀ» »ç¿ëÇÏ´Â ´Ù¾çÇÑ ´Ù¸¥ PL/SQL ÇÁ·Î±×·¥ ±¸¼ºÀ» ¾à¼úÇÏ°í ÀÖ½À´Ï´Ù.
 

ÇÁ·Î±×·¥ ±¸¼º

¼³        ¸í

»ç¿ë ȯ°æ

ÀÍ¸í ºí·Ï

¾îÇø®ÄÉÀ̼ǿ¡ ³»ÀåµÇ°Å³ª ´ëÈ­½ÄÀ¸·Î È£ÃâµË´Ï´Ù.

¸ðµç PL/SQL ȯ°æ

³»ÀåµÈ ÇÁ·Î½ÃÀú ¶Ç´Â ÇÔ¼ö

¸Å°³º¯¼ö¸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ°í À̸§À» ÀÌ¿ëÇÏ¿© ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ´Â À̸§ÀÌ ÀÖ´Â PL/SQL ºí·ÏÀº ¿À¶óŬ ¼­¹ö ³»¿¡¼­ ÀúÀåµË´Ï´Ù.

¿À¶óŬ ¼­¹ö

¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î½ÃÀú ¶Ç´Â ÇÔ¼ö

¸Å°³º¯¼ö¸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ°í À̸§À» ÀÌ¿ëÇÏ¿© ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ´Â À̸§ÀÌ ÀÖ´Â PL/SQL ºí·ÏÀº Developer/2000 ¾îÇø®ÄÉÀ̼ǿ¡ ÀúÀåµÇ°Å³ª °øÀ¯ ¶óÀ̺귯¸®¿¡ ÀúÀåµË´Ï´Ù

Developer/2000 ÄÄÆ÷³ÍÆ®- ¿¹¸¦ µé¸é,Forms

ÆÐÅ°Áö

°ü·ÃµÈ ÇÁ·Î½ÃÀú, ÇÔ¼öµéÀ» ¹­¾î À̸§ ºÙÀÎ PL/SQL ¸ðµâÀÔ´Ï´Ù.

Oracle Server ¿Í Developer/2000 ÄÄÆ÷³ÍÆ®? ¿¹¸¦ µé¸é, Forms

µ¥ÀÌÅͺ£À̽º Æ®¸®°Å

µ¥ÀÌÅͺ£À̽º Å×À̺í°ú °ü·ÃµÇ°í DML¸í·É¹® ¿¡ ÀÇÇØ Æ®¸®°ÅµÉ ¶§ ÀÚµ¿ÀûÀ¸·Î ½ÇÇàµË´Ï´Ù.

Oracle Server

¾îÇø®ÄÉÀÌ¼Ç Æ®¸®°Å

PL/SQL ºí·ÏÀº ¾îÇø®ÄÉÀÌ¼Ç À̺¥Æ®¿Í °ü·ÃµÇ°í ÀÚµ¿ÀûÀ¸·Î ½ÇÇàµË´Ï´Ù.

Developer/2000 ÄÄÆ÷³ÍÆ®- ¿¹¸¦ µé¸é, Forms

 

************** ºÎ¼­/Á÷¿ø ¸®Æ÷Æ® ******************

ºÎ¼­ : ºÎ¼­¹øÈ£       ºÎ¼­¸í             À§Ä¡

        10         ACCOUNTING        NEW YORK

»ç¿ø : »ç¹ø     À̸§         ±Þ¿©          ±Þ¿© µî±Þ

       7871    Anderson    2000         ***   
      7890    Andrew       700         * 
      7870    Scott       2400         **** 
      7866    David        900         * 
      7891    Sylvia      3200         *****

2¸íÀÇ ±Þ¿©°¡ ÀλóµÇ¾ú½À´Ï´Ù.


À§¿Í °°Àº ¸®Æ÷Æ®¸¦ »Ì¾Æ³»°í $1000º¸´Ù ÀûÀº ±Þ¿©¸¦ ¹Þ´Â Á÷¿øÀÇ ±Þ¿©¸¦ 10%ÀλóÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿© º¾´Ï´Ù.(PL/SQL º¯¼ö ¼³¸í Áß v_...¸¦ v$...·Î ¼³¸íÀ» ÇÏ¿´À¸³ª, ½ÇÁ¦·Î´Â v_...°¡ ¸Â½À´Ï´Ù.)

ACCEPT p_deptno PROMPT 'Please enter the department number : '

DECLARE

   v_deptno    NUMBER(2);

   v_dname     CHAR(14);

   v_loc       CHAR(13);

   v_empno     emp.empno%TYPE;

   v_ename     emp.ename%TYPE;

   v_sal       emp.sal%TYPE;

   v_grade     salgrade.grade%TYPE;

   v_dno       emp.deptno%TYPE := &p_deptno;

   CURSOR emp_cursor IS

          SELECLT empno, ename, sal

          FROM emp

          WHERE deptno = &p_deptno;

   e_no_emp    EXCEPTION;

BEGIN

   -- print out the report title

   DBMS_OUTPUT.PUT_LINE('*********ºÎ¼­/Á÷¿ø ¸®Æ÷Æ®*********');

   SELECT  deptno, dname, loc

      INTO v_deptno, v_dname, v_loc

      FROM dept

      WHERE   deptno = v_dno;

   DBMS_OUTPUT.PUT_LINE('ºÎ¼­ :  ºÎ¼­¹øÈ£   ºÎ¼­¸í        À§Ä¡');

   DBMS_OUTPUT.PUT_LINE('     '¡«v_deptno¡«'    '¡«v_dname¡«
                        '   '¡«v_loc¡«'   ');

   DBMS_OUTPUT.PUT_LINE('»ç¿ø : »ç¹ø   À̸§   ±Þ¿©    ±Þ¿©µî±Þ');

   OPEN emp_cursor;

   FETCH emp_cursor INTO v_empno, v_ename, v_sal;

   /* according to the salary amount,

      print out the stars */

   WHILE emp_cursor%FOUND LOOP

      SELECT grade

         INTO v_grade

         FROM salgrade

         WHERE v_sal > losal AND v_sal <hisal;

      DBMS_OUTPUT.PUT('      '¡«v_empno¡«'   '¡«v_ename¡«
                      '      '¡«v_sal¡«'     ');

      FOR I in 1..v_grade LOOP

         DBMS_OUTPUT.PUT('*');

      END LOOP;

      DBMS_OUTPUT.PUT_LINE('');

      FETCH emp_cursor INTO v_empno, v_ename, v_sal;

   END LOOP;

   CLOSE emp_cursor;

   UPDATE emp

      SET     sal = sal * 1.1

      WHERE   sal < 1000;

   IF SQL%ROWCOUNT = 0 THEN

      RAISE e_no_emp;

   ELSE

      DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT ¡«'¸íÀÇ ±Þ¿©°¡ ' ||
                           'ÀλóµÇ¾ú½À´Ï´Ù.');

   END IF;

   COMMIT;

EXCEPTION

   WHEN no_data_found THEN

      DBMS_OUTPUT.PUT_LINE('There is no matching data.');

   WHEN too_many_rows THEN

      DBMS_OUTPUT.PUT_LINE('More than one matching data. ');

   WHEN e_no_emp THEN

      DBMS_OUTPUT.PUT_LINE('No employee with a smaller ' ||
                           'than  $1000.');

   --in case of any other exception

   WHEN others THEN

      DBMS_OUTPUT.PUT_LINE('Some other error occurred.');

END;  

 

  1. PL/SQL ÇÁ·Î±×·¥ ´ÜÀ§(program unit)´Â ÇϳªÀÇ ³í¸®ÀûÀΠŽºÅ©·Î °£ÁֵǸç ÇϳªÀÇ PL/SQL¶Ç´Â SQL*Plus ¹®ÀåÀ¸·Î ±¸¼ºµÇ¾îÁ®¾ß ÇÑ´Ù.
    A. ±×·¸´Ù
    B. ¾Æ´Ï´Ù
    ´ä
    X Á¤´ä:B