PL/SQL¥á¥â

#¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´Ø¤¹¤ë¾ðÊó¤Î¼èÆÀ###########################################################
¢£¥Æ¡¼¥Ö¥ë°ìÍ÷¤ò¼èÆÀ¤¹¤ë
select * from tab;

¢£¤¢¤ë¥Æ¡¼¥Ö¥ë¤ÎÎó̾¤ò¼èÆÀ¤¹¤ë
desc ɽ̾;¡Ê;¤Ï¾Êά²Ä¡Ë

¢£¥æ¡¼¥¶°ìÍ÷¤ò¼èÆÀ¤¹¤ë
select username from user_users;

¢£¥¤¥ó¥Ç¥Ã¥¯¥¹°ìÍ÷¤ò¼èÆÀ¤¹¤ë
select * from user_ind_columns;
¢¨»ØÄꤷ¤¿É½¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¤ß¡¢É½¼¨¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
select column_name from user_ind_columns where table_name = 'ɽ̾';



#¥¨¥Ç¥£¥¿¤Î»ÈÍÑÊýË¡#######################################################################
¢£oracle¤Ø¤ÎÀܳ
  • ¥³¥ó¥Ô¥å¡¼¥¿¤Î´ÉÍý¢Í¥µ¡¼¥Ó¥¹¤è¤ê¡¢°Ê²¼¤òµ¯Æ°
¡¡OracleOraHome92TNSListener
¡¡OracleServiceCOMP1
  • ¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¤Ç¡¢sqlplus¤ÈÆþÎÏ
  • ¥æ¡¼¥¶¡¼Ì¾¡áscott¡¢¥Ñ¥¹¥ï¡¼¥É¡átiger¤òÆþÎÏ


¢£¥¨¥Ç¥£¥¿¤Î»ÈÍÑÊýË¡
­¡¥¨¥Ç¥£¥¿¤Îµ¯Æ°¡Ê¿·¤¿¤Ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤òÁªÂò¡Ë
¡¡EDIT sample1

­¢¥á¥âÄ¢¾å¤ËPL/SQL¤òµ­½Ò¤·¡¢Êݸ
¢¨C:\oracle\ora92\bin¤Ë³ÊǼ¤µ¤ì¤ë

­£¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô
¡¡@sample1



#PL/SQL¤Îµ­½Ò############################################################################
¢£¥Ç¥Ð¥Ã¥¯Ê¸
­¡sqlplus¤Î´Ä¶­ÊÑ¿ô:serveroutput¤òon¤Ë¤¹¤ë
set serveroutput on

­¢¥Ç¥Ð¥Ã¥¯Ê¸¤òµ­½Ò
DBMS_OUTPUT.PUT_LINE('TEST1');


¢£Âçʸ»ú¤È¾®Ê¸»ú
´ðËÜŪ¤Ë¶èÊ̤µ¤ì¤Ê¤¤


¢£¥¹¥È¥¢¥É¡¦¥µ¥Ö¥×¥í¥°¥é¥à
PL/SQL¤¬¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¤Î¾õÂ֤ǡ¢oracle¤Ë³ÊǼ¤µ¤ì¤¿¤â¤Î


¢£´ðËܹ½Â¤
DECLARE
¡¡Àë¸ÀÉô
BEGIN
¡¡¼Â¹ÔÉô
EXCEPTION
¡¡Îã³°½èÍýÉô
END;


¢£ÊÑ¿ô¤ÎÂåÆþ
DECLARE
¡¡hensuu1 NUMBER
BEGIN
¡¡hensuu1 := 10
END;


¢£ÊÑ¿ô¤Î¥Ç¡¼¥¿·¿
­¡¥¹¥«¥é¡¼·¿¡§oracle¤¬»öÁ°¤ËÄêµÁ¤·¤Æ¤¤¤ë
¡¡NUMBER, CHAR, VARCHAR2, DATE, BOOLEAN

­¢¥³¥ó¥Ý¥¸¥Ã¥È·¿¡§oracle¤¬»öÁ°¤ËÄêµÁ¤·¤Æ¤¤¤ë
¡¡RECORD, TABLE

­£»²¾È·¿¡§oracle¤¬»öÁ°¤ËÄêµÁ¤·¤Æ¤¤¤ë
¡¡REF CURSOR


¢£¥Æ¡¼¥Ö¥ë¤Î¥Ç¡¼¥¿·¿¤ò»ÈÍѤ¹¤ë
­¡%TYPE¡¡¢Í¤¢¤ëÎó¤Î¥Ç¡¼¥¿·¿
  • ÊÑ¿ô¤ÎÀë¸À
¡¡hennsuu1 dept.depno%TYPE;
  • ÊÑ¿ô¤Î»ÈÍÑ
¡¡SELECT deptno
¡¡¡¡INTO hennsuu1
¡¡¡¡FROM dept
¡¡¡¡WHERE location = 'NEW YORK';

­¢%ROWTYPE¡¡¢Í¥Æ¡¼¥Ö¥ë¤Î¤¢¤ë¹Ô¤Î¥Ç¡¼¥¿·¿
  • ÊÑ¿ô¤ÎÀë¸À
¡¡dept_row dept%ROWTYPE;
  • ÊÑ¿ô¤Î»ÈÍÑ
¡¡SELECT deptno, dname, location
¡¡¡¡INTO dept_row
¡¡¡¡FROM dept
¡¡¡¡WHERE deptno = 10;


¢£Ê¬´ô
­¡IFʸ¡ÊÈæ³Ó¤Ë¤Ï¡È=¡É¤ò»ÈÍÑ¡Ë
IF hensuu1 = 10 THEN
¡¡/* ½èÍý£± */
ELSE
¡¡/* ½èÍý£² */
END IF;


­¢CASEʸ
CASE hensuu1
¡¡WHEN 10 THEN
¡¡¡¡/* ½èÍý£± */
¡¡WHEN 20 THEN
¡¡¡¡/* ½èÍý£² */
¡¡ELSE
¡¡¡¡/* ½èÍý£³ */
END CASE;


¢£¥ë¡¼¥×
­¡LOOP
LOOP
¡¡EXIT WHEN count=3;
¡¡/* ½èÍý */
END LOOP;


­¢FOR
FOR count IN 1..3 LOOP
¡¡/* ½èÍý */
END LOOP;


­£WHILE
WHILE count<3 LOOP
¡¡/* ½èÍý */
END LOOP;



¢£¼èÆÀ·ë²Ì¤òÊÑ¿ô¤Ë³ÊǼ¤¹¤ë
­¡SELECT ¡Á INTO ¡¦¡¦¡¦

­¢¥«¡¼¥½¥ë
  • ¥«¡¼¥½¥ë¤ÎÄêµÁ
¡¡CURSOR emp_cur
¡¡IS SELECT empno,ename FROM emp WHERE deptno = 10;

  • ³ÊǼÍÑÊÑ¿ô¤ÎÄêµÁ
¡¡emp_rec emp_cur%ROWTYPE;

  • ¥«¡¼¥½¥ë¤Î¼Â¹Ô
¡¡OPEN emp_cur;

  • ÊÑ¿ô¤Ø¤Î³ÊǼ
¡¡LOOP
¡¡¡¡FETCH emp_cur INTO emp_rec;
¡¡¡¡EXIT WHEN emp_cur%NOTFOUND;
¡¡¡¡DBMS_OUTPUT.PUT_LINE(emp_rec.empno||' '||emp_rec.ename);
¡¡END LOOP;

  • ¥«¡¼¥½¥ë¤Î¥¯¥í¡¼¥º
¡¡CLOSE emp_cur;


¢£¥«¡¼¥½¥ëFOR¥ë¡¼¥×
  • ¥«¡¼¥½¥ë¤ÎÄêµÁ
¡¡CURSOR emp_cur
¡¡IS SELECT empno,ename FROM emp WHERE deptno = 10;

  • ¥«¡¼¥½¥ë¤Î¼Â¹Ô¡¢ÊÑ¿ô¤Ø¤Î³ÊǼ¡¢¥«¡¼¥½¥ë¤Î¥¯¥í¡¼¥º
¡¡FOR emp_rec IN emp_cur LOOP
¡¡¡¡DBMS_OUTPUT.PUT_LINE(emp_rec.empno||' '||emp_rec.ename);
¡¡END LOOP;


¢£¥«¡¼¥½¥ë½èÍýÃæ¤Î¥ë¡¼¥×¤«¤é¤Îæ½Ð
¡¡LOOP
¡¡¡¡FETCH emp_cur INTO emp_rec;
¡¡¡¡EXIT WHEN emp_cur%NOTFOUND; /* ÌÀ¼¨¥«¡¼¥¾¥ë°À­¤ÎNOTFOUND */
¡¡¡¡DBMS_OUTPUT.PUT_LINE(emp_cur%ROWCOUNT);
¡¡END LOOP;


¢£Îã³°½èÍý
­¡¼Â¹ÔÉô
SELECT empno INTO e_empno FROM emp;

­¢Îã³°½èÍýÉô
EXCEPTION
¡¡WHEN too_many_rows THEN /* £²¹Ô°Ê¾å¤òÊÖ¤¹¾ì¹ç */
¡¡¡¡DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS!');
¡¡WHEN no_data_found THEN /* £±¹Ô¤âÊÖ¤µ¤Ê¤¤¾ì¹ç */
¡¡¡¡DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND!');
2006ǯ06·î30Æü(¶â) 02:11:24 Modified by alivealive




¥¹¥Þ¡¼¥È¥Õ¥©¥óÈǤǸ«¤ë