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¤Ø¤ÎÀܳ
¡¡OracleServiceCOMP1
¢£¥¨¥Ç¥£¥¿¤Î»ÈÍÑÊýË¡
¡¥¨¥Ç¥£¥¿¤Îµ¯Æ°¡Ê¿·¤¿¤Ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤òÁªÂò¡Ë
¡¡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¡¡¢Í¤¢¤ëÎó¤Î¥Ç¡¼¥¿·¿
¡¡¡¡INTO hennsuu1
¡¡¡¡FROM dept
¡¡¡¡WHERE location = 'NEW YORK';
¢%ROWTYPE¡¡¢Í¥Æ¡¼¥Ö¥ë¤Î¤¢¤ë¹Ô¤Î¥Ç¡¼¥¿·¿
¡¡¡¡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 ¡¦¡¦¡¦
¢¥«¡¼¥½¥ë
¡¡IS SELECT empno,ename FROM emp WHERE deptno = 10;
¡¡¡¡FETCH emp_cur INTO emp_rec;
¡¡¡¡EXIT WHEN emp_cur%NOTFOUND;
¡¡¡¡DBMS_OUTPUT.PUT_LINE(emp_rec.empno||' '||emp_rec.ename);
¡¡END LOOP;
¢£¥«¡¼¥½¥ëFOR¥ë¡¼¥×
¡¡IS SELECT empno,ename FROM emp WHERE deptno = 10;
¡¡¡¡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!');
¢£¥Æ¡¼¥Ö¥ë°ìÍ÷¤ò¼èÆÀ¤¹¤ë
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¤Ø¤ÎÀܳ
- ¥³¥ó¥Ô¥å¡¼¥¿¤Î´ÉÍý¢Í¥µ¡¼¥Ó¥¹¤è¤ê¡¢°Ê²¼¤òµ¯Æ°
¡¡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¡¡¢Í¤¢¤ëÎó¤Î¥Ç¡¼¥¿·¿
- ÊÑ¿ô¤ÎÀë¸À
- ÊÑ¿ô¤Î»ÈÍÑ
¡¡¡¡INTO hennsuu1
¡¡¡¡FROM dept
¡¡¡¡WHERE location = 'NEW YORK';
¢%ROWTYPE¡¡¢Í¥Æ¡¼¥Ö¥ë¤Î¤¢¤ë¹Ô¤Î¥Ç¡¼¥¿·¿
- ÊÑ¿ô¤ÎÀë¸À
- ÊÑ¿ô¤Î»ÈÍÑ
¡¡¡¡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 ¡¦¡¦¡¦
¢¥«¡¼¥½¥ë
- ¥«¡¼¥½¥ë¤ÎÄêµÁ
¡¡IS SELECT empno,ename FROM emp WHERE deptno = 10;
- ³ÊǼÍÑÊÑ¿ô¤ÎÄêµÁ
- ¥«¡¼¥½¥ë¤Î¼Â¹Ô
- ÊÑ¿ô¤Ø¤Î³ÊǼ
¡¡¡¡FETCH emp_cur INTO emp_rec;
¡¡¡¡EXIT WHEN emp_cur%NOTFOUND;
¡¡¡¡DBMS_OUTPUT.PUT_LINE(emp_rec.empno||' '||emp_rec.ename);
¡¡END LOOP;
- ¥«¡¼¥½¥ë¤Î¥¯¥í¡¼¥º
¢£¥«¡¼¥½¥ëFOR¥ë¡¼¥×
- ¥«¡¼¥½¥ë¤ÎÄêµÁ
¡¡IS SELECT empno,ename FROM emp WHERE deptno = 10;
- ¥«¡¼¥½¥ë¤Î¼Â¹Ô¡¢ÊÑ¿ô¤Ø¤Î³ÊǼ¡¢¥«¡¼¥½¥ë¤Î¥¯¥í¡¼¥º
¡¡¡¡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