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;