PL/SQL ¤Ç INSERT ¤ò¹Ô¤Ê¤¦
¥Æ¡¼¥Ö¥ëÄêµÁ
°Ê²¼¤Î¤è¤¦¤Ê¥ì¥¤¥¢¥¦¥È¤ÎÍøÍѼԥޥ¹¥¿É½¤ò»ÈÍѤ·¤Æ PL/SQL ¤Î¥µ¥ó¥×¥ë¤òºîÀ®¤¹¤ë¡£
| ÆüËܸì̾ | ¥«¥é¥à̾ | ÆþÎÏɬ¿Ü | ¥Ç¡¼¥¿¤Î·¿¤ÈÂ礤µ | ¾Êά»þ |
| ÍøÍÑ¼Ô£É£Ä | USER_ID | YES | ¡¦4 ¥Ð¥¤¥È°ÊÆâ¤Îʸ»úÎó | |
| ÉôÌç | DEPT_NO | NO | ¡¦4 ¥Ð¥¤¥È°ÊÆâ¤Îʸ»úÎó | |
| ÍøÍѼÔ̾ | USER_NAME | NO | ¡¦32 ¥Ð¥¤¥È°ÊÆâ¤Îʸ»úÎó | |
| ºîÀ®Æü | CREATED_ON | NO | ¡¦ÆüÉÕ(Æü¡Ü»þ´Ö) | SYSDATE |
| ¹¹¿·Æü | MODIFIED_ON | NO | ¡¦ÆüÉÕ(Æü¡Ü»þ´Ö) | |
DDL ¤Ï °Ê²¼¤Î¤È¤ª¤ê¡£
CREATE TABLE RIVUS.USER_MASTER
(
USER_ID VARCHAR2(4) NOT NULL,
DEPT_NO VARCHAR2(4),
USER_NAME VARCHAR2(32),
CREATED_ON DATE DEFAULT SYSDATE,
MODIFIED_ON DATE
);
PL/SQL ¤Ç INSERT ¤ò¼Â¹Ô¤¹¤ë
SQLPlus ¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é SQL ¤ò¼Â¹Ô¤¹¤ë¤Î¤ÈÊѤï¤ê¤Ê¤¯µ½Ò¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
SQL*Plus ¤Î¾ì¹ç¤Ë¤Ï¼Â¹Ô¤ÎÁ°¤Ë SET SERVEROUTPUT ON ¤ò¼Â¹Ô¤·¤Æ¤ª¤¯¡£
CREATE OR REPLACE PROCEDURE RIVUS.STEP01_INSERT
IS
BEGIN
INSERT INTO USER_MASTER (
USER_ID, DEPT_NO, USER_NAME, CREATED_ON, MODIFIED_ON
) VALUES (
'0020', '1001',
'¾®Àô ½ã°ì',
DEFAULT,
NULL
) ;
DBMS_OUTPUT.PUT_LINE('¥¤¥ó¥µ¡¼¥È¤·¤¿·ï¿ô¤Ï' || SQL%ROWCOUNT || '·ï¤Ç¤¹¡£');
COMMIT ;
DBMS_OUTPUT.PUT_LINE('COMMIT(SQL)¸å¤Î ROWCOUNT ¤Ï' || SQL%ROWCOUNT || '¤Ç¤¹¡£');
END;
/
-- ¤³¤Î¥×¥í¥·¡¼¥¸¥ã¤ò¼Â¹Ô¤·¤Æ¤ß¤ë¡£
CALL STEP01_INSERT() ;
¥¤¥ó¥µ¡¼¥È¤·¤¿·ï¿ô¤Ï1·ï¤Ç¤¹¡£
¥³¥ß¥Ã¥È(SQL)¼Â¹Ô¸å¤Î ROWCOUNT ¤Ï0¤Ç¤¹¡£
¥³¡¼¥ë¤¬´°Î»¤·¤Þ¤·¤¿¡£
¥½¡¼¥¹¥³¡¼¥É¤Î SQL%ROWCOUNT ¤Ï °ÅÌÛ¥«¡¼¥½¥ë SQL ¤È¡¢¤½¤Î°À ROWCOUNT ¤Ç¤¢¤ë¡£
¤³¤Î PL/SQL ¤Î¥½¡¼¥¹¥³¡¼¥ÉÆâ¤Î INSERT ʸ¤ÏPL/SQL ¥¨¥ó¥¸¥ó¤Ç°ÅÌÛ¥«¡¼¥½¥ë¤ËÊÑ´¹¤µ¤ì¤Æ¤ª¤ê¡¢
¼«Æ°Åª¤Ë ¥«¡¼¥½¥ë ¤Î¥ª¡¼¥×¥ó¡Á¥¯¥í¡¼¥º½èÍý¤Þ¤Ç¤¬¹Ô¤Ê¤ï¤ì¤Æ¤¤¤ë¡£
PL/SQL ¤Î INSERT ¤Ç RETURNING ¶ç¤ò»ÈÍѤ¹¤ë
RETURNING ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç INSERT ¤·¤¿·ë²Ì¤ò SELECT ¤¹¤ë¤³¤È¤Ê¤¯¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
¤³¤ÎÎã¤Ç¤Ï¥Ç¥Õ¥©¥ë¥ÈÀ©Ìó¤Ë¤è¤Ã¤Æ¼«Æ°Åª¤ËºîÀ®Æü¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë CREATED_ON ¹àÌܤò¼èÆÀ¤·¤Æ¤¤¤ë¡£
CREATE OR REPLACE PROCEDURE RIVUS.STEP02_INSERT
IS
vUser USER_MASTER%ROWTYPE;
BEGIN
INSERT INTO USER_MASTER (
USER_ID, DEPT_NO, USER_NAME, CREATED_ON, MODIFIED_ON
) VALUES (
'0021', '1001',
'¾®Àô ½ã°ì',
DEFAULT,
NULL
)
RETURNING USER_ID, DEPT_NO, USER_NAME, CREATED_ON, MODIFIED_ON INTO vUser;
DBMS_OUTPUT.PUT_LINE('¥¤¥ó¥µ¡¼¥È¤·¤¿·ï¿ô¤Ï' || SQL%ROWCOUNT || '·ï¤Ç¤¹¡£');
COMMIT ;
DBMS_OUTPUT.PUT_LINE('COMMIT(SQL)¸å¤Î ROWCOUNT ¤Ï' || SQL%ROWCOUNT || '¤Ç¤¹¡£');
DBMS_OUTPUT.PUT_LINE('¥¤¥ó¥µ¡¼¥È¤·¤¿ÆüÉÕ ¤Ï' || vUser.CREATED_ON || '¤Ç¤¹¡£');
END;
/
SQL INSERT ´ØÏ¢»ö¹à