DML
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 DML

1 DML

ÀÚ ÀÌÁ¦ºÎÅÍ ¿ÏÀüÇÑ ÇÁ·Î±×·¥ ¿¹Á¦¸¦ º¸±â·Î ÇÑ´Ù. ´ëÃæ ±âº»ÀûÀÎ °ÍµéÀº ¸ðµÎ ¹è¿ü´Ù. ÀÏ´Ü Á¶±Ý ¹è¿üÀ¸´Ï Çѹø ½á¸Ô¾î º¸ÀÚ.

¸ÕÀú Pro*C/C++ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇÑ´Ù. Pro*C/C++ ÇÁ·Î±×·¥Àº C ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏ ÇϱâÀü¿¡ ¸ÕÀú ÇÁ¸®-ÄÄÆÄÀÏ °úÁ¤À» °ÅÃÄ¾ß Çϸç ÇÁ¸®-ÄÄÆÄÀÏ·¯´Â ¿À¶óŬÀ» ¼³Ä¡ÇÒ ¶§ °°ÀÌ ¼³Ä¡µÇ°Å³ª Ãß°¡·Î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. $ORACLE_HOME/bin ¹Ø¿¡ proc ¶ó´Â À̸§À¸·Î ¼³Ä¡µÇ¸ç ÇÊ¿äÇÑ Çì´õÆÄÀϵéÀº $ORACLE_HOME/precomp/public ¹Ø¿¡ ¶óÀ̺귯¸® ÆÄÀϵéÀº $ORACLE_HOME/lib ¹Ø¿¡ µé¾î°¡¸ç ½ÇÁ¦ ¸µÅ·°úÁ¤¿¡¼­ ¾²ÀÌ´Â ¶óÀ̺귯¸® ÆÄÀÏÀº $ORACLE_HOME/lib/libclntsh.so ÆÄÀÏÀÌ´Ù.

ÇÁ·Î±×·¥ ÀÛ¼º °úÁ¤À» »ìÆìº¸ÀÚ.
  1. ¿ø½Ã ÄÚµåÆÄÀÏ(.pc) ÀÛ¼º
    vi, emacs µî ÀÚ½ÅÀÌ ÆíÇÑ ¿¡µðÅ͸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¡¹Ö ÇÏ¸é µÈ´Ù.
  2. proc ¸¦ ÀÌ¿ëÇÏ¿© ÇÁ¸®-ÄÄÆÄÀÏ °úÁ¤À» °ÅÃÄ C ÄÚµåÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
    $ proc ¿É¼Ç ¿ø½Ã¼Ò½ºÆÄÀÏ
    ¿É¼ÇÀÇ °æ¿ì procÀÇ help¸¦ Âü°íÇÑ´Ù. ÀϹÝÀûÀÎ °æ¿ì parse=none ¸¸ ÁÖ¸é ÄÄÆÄÀÏÀÌ µÇ°í ´ÙÀ̳ª¹Í SQLÀÌ ÀÖ´Â °æ¿ì dynamic=ansi¸¦ Ãß°¡·Î ÁÖ°í PL/SQLÀÌ Æ÷ÇÔµÈ °æ¿ì¿¡´Â sqlcheck=semantics ¿Í userid=»ç¿ëÀÚID/ÆÐ½º¿öµå ¸¦ Ãß°¡·Î ÁÖ¾î¾ß ÇÑ´Ù. ±× ÀÌ¿ÜÀÇ »óȲ¿¡ ´ëÇÑ °æ¿ì´Â procÀÇ help³ª ¸Å´º¾óÀ» Âü°íÇϵµ·Ï ÇÑ´Ù.
  3. C ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇÏ¿© ÄÄÆÄÀϰú ¸µÅ©ÇÏ¿© ½ÇÇà°¡´ÉÇÑ ÆÄÀÏ·Î ¸¸µé¾î ³½´Ù.
    $ gcc -o ½ÇÇàÆÄÀÏ C-¼Ò½ºÆÄÀÏ -I$ORACLE_HOME/precomp/public -L$ORACLE_HOME/lib -lclntsh

ÄÄÆÄÀÏÇÏ´Â ¹æ¹ýÀ» ¹è¿üÀ¸´Ï ¾Æ·¡ÀÇ ÇÁ·Î±×·¥À» Á÷Á¢ Ã帰í ÄÄÆÄÀÏ, ½ÇÇàÇØ º¸µµ·Ï ÇÏÀÚ.
ÀÌ ÇÁ·Î±×·¥Àº Pro*C/C++À» ÀÌ¿ëÇÑ DMLÀÛ¾÷ÀÌ´Ù.
/* -------------------------------------------------------------------------------- 
ÆÄÀÏ À̸§ : dml.pc 
°³¹ß ÀÏÀÚ : 2002-10-28 
ÀÛ¼ºÀÚ : ·ù¸íȯ 
-------------------------------------------------------------------------------- */ 
#include <stdio.h> 
#include <stdlib.h> 
 
/* 
 * $ORACLE_HOME/precomp/public/sqlca.h ¸¦ Æ÷ÇÔÇØ ÁÖ±â À§Çؼ­ 
 */ 
exec sql include sqlca; 
 
/* 
* È£½ºÆ® º¯¼ö ¼±¾ð 
*/ 
exec sql begin declare section; 
    /* 
     * »ç¿ëÀÚ ID¿Í ÆÐ½º¿öµå 
     */ 
    char *username; 
    char *password; 
 
    /* 
     * emp Å×À̺íÀÇ Ä®·³ ¸®½ºÆ® 
     */ 
    int empno; 
    int mgr; 
    int sal; 
    int comm; 
    int deptno; 
    char *ename; 
    char *job; 
    char *hiredate; 
 
    /* 
     * emp Å×À̺í Ä®·³µéÀÇ Indicator º¯¼ö 
     */ 
    short ind_empno; 
    short ind_mgr; 
    short ind_sal; 
    short ind_comm; 
    short ind_deptno; 
    short ind_ename; 
    short ind_job; 
    short ind_hiredate; 
exec sql end   declare section; 
 
/* 
 * SQL ¿¡·¯ ¹ß»ý½Ã ½ÇÇàÇÒ ÇÔ¼ö 
 * ¿¡·¯Äڵ带 ÇÁ¸°Æ® ÇÏ°í ·Ñ¹é ÈÄ¿¡ Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
 */ 
void sql_error (void) 
{ 
    printf ("SQL Error Code : %d\n", sqlca.sqlcode); 
    printf ("SQL Error Message : %s\n", sqlca.sqlerrm.sqlerrmc); 
 
    exec sql whenever sqlerror continue; 
    exec sql rollback work release; 
 
    exit (EXIT_FAILURE); 
} 
 
/* 
 * Standard Input ¿¡¼­ ¹®ÀÚ¿­À» ¹Þ¾Æ¼­ ÀúÀåÇÏ´Â ÇÔ¼ö 
 * ÀÔ·ÂÀÌ ¾øÀ¸¸é -1À» ¸®ÅÏÇÑ´Ù. 
*/ 
int get_value (char *buf, char *prompt) 
{ 
    printf (prompt); 
    fgets (buf, 256, stdin); 
    /* 
     * \r\nÀ» Á¦°ÅÇÑ´Ù. 
     */ 
    buf [strlen (buf) - 1] = '\0'; 
 
    if (strlen (buf) == 0) 
    { 
        return -1; 
    } 
    else 
    { 
        return 0; 
    } 
} 
 
/* 
 * µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇϰí Insert, Update, Delete¸¦ 
 * ÁøÇàÇÑ ÈÄ Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
 */ 
int main (void) 
{ 
char buf [256]; 
 
    printf ("Input Data to Insert\n"); 
 
    ind_empno = get_value (buf, "Empno (Max 4) : "); 
    empno = atoi (buf); 
 
    ind_ename = get_value (buf, "Ename (Max 10) : "); 
    ename = (char *)strdup (buf); 
 
    ind_job = get_value (buf, "Job (Max 10) : "); 
    job = (char *)strdup (buf); 
 
    ind_mgr = get_value (buf, "Manager (Max 4) : "); 
    mgr = atoi (buf); 
 
    ind_sal = get_value (buf, "Salary (Max 7) : "); 
    sal = atoi (buf); 
 
    ind_comm = get_value (buf, "Comm (Max 7) : "); 
    comm = atoi (buf); 
 
    ind_deptno = get_value (buf, "Deptno (Max 2) : "); 
    deptno = atoi (buf); 
 
    /* 
     * »ç¿ëÀÚ ID¿Í Password¸¦ ¼³Á¤ÇÏ°í µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇϰí 
     * sqlca.sqlcode ¸¦ ÅëÇØ ¿¡·¯°¡ ÀÖ´ÂÁö °Ë»çÇÑ´Ù. 
     */ 
    username = (char *)strdup ("scott"); 
    password = (char *)strdup ("tiger"); 
    exec sql 
        connect :username identified by :password; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Connected to Oracle Database\n"); 
 
    /* 
     * Insert ¸¦ ¼öÇàÇÑ´Ù. Ä®·³ °ª µÚ¿¡ Indicator¸¦ ºÙ¿©¼­ 
* NULLÀÌ ÀÖÀ» °æ¿ì Á¤È®È÷ NULLÀ» ³Öµµ·Ï ÇÑ´Ù. 
* sqlca.sqlcode ¸¦ »ç¿ëÇÏ¿© SQL ½ÇÇà¿¡ ¿¡·¯°¡ ÀÖ¾ú´ÂÁö °Ë»çÇÑ´Ù. 
*/ 
    exec sql 
        insert into emp 
        values (:empno:ind_empno, :ename:ind_ename, :job:ind_job, :mgr:ind_mgr, 
                sysdate, :sal:ind_sal, :comm:ind_comm, :deptno:ind_deptno); 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Inserted to Emp table in Oracle Database\n"); 
 
    /* 
     * Insert ÇÑ ÈÄ¿¡ µ¥ÀÌÅ͸¦ Àû¿ëÇÑ´Ù. 
* À̶§ µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÀÌ ²÷¾îÁöÁö ¾Êµµ·Ï ÁÖÀÇÇÑ´Ù. 
*/ 
    exec sql 
        commit work; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
printf ("Input Data to Update\nSalary Increase and Comm Increase\n"); 
 
    ind_empno = get_value (buf, "Empmo (Max 4) : "); 
    empno = atoi (buf); 
 
    ind_sal = get_value (buf, "Sal (Max 7) : "); 
    sal = atoi (buf); 
 
    ind_comm = get_value (buf, "Comm (Max 7) : "); 
    comm = atoi (buf); 
 
    /*  
     * Update ÇÑ´Ù. 
     * µ¥ÀÌÅ͸¦ Àû¿ëÇϱâÀü¿¡ SQL ¹®ÀåÀÌ Àß ½ÇÇàµÇ¾ú³ª °Ë»çÇÑ´Ù. 
     */ 
    exec sql 
        update emp 
        set sal = :sal:ind_sal, comm = :comm:ind_comm 
        where empno = :empno; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
    printf ("Updated to Emp table in Oracle Database\n"); 
 
    /* 
     * º¯°æµÈ µ¥ÀÌÅÍ Àû¿ëÇÑ´Ù. 
     */ 
    exec sql 
        commit work; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
    printf ("Input Data to Delete\n"); 
    /* 
     * »èÁ¦ÇÒ »ç¶÷ÀÇ »ç¿ø ¹øÈ£¸¦ ÀÔ·Â ¹Þ´Â´Ù. 
     */ 
    ind_empno = get_value (buf, "Empmo (Max 4) : "); 
    empno = atoi (buf); 
 
    /* 
   * Delete ÇÑ´Ù. ¿ª½Ã SQL ½ÇÇà °á°ú¸¦ °Ë»çÇÑ´Ù. 
   */ 
    exec sql 
        delete from emp 
        where empno = :empno; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
printf ("Deleted from Emp table in Oracle Database\n"); 
 
    /* 
     * º¯°æµÈ µ¥ÀÌÅ͸¦ Àû¿ëÇÑ´Ù. 
     */ 
    exec sql 
        commit work; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
    /* 
     * µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
     * Rollback À¸·Î Á¢¼ÓÀ» Á¾·áÇÑ °ÍÀº Ưº°ÇÑ ÀÌÀ¯´Â ¾ø´Ù. ^^ 
     */ 
    exec sql 
        rollback work release; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Disconnect from Oracle Database\n"); 
 
    exit (EXIT_SUCCESS); 
} 
 

ÄÚµåÀÇ ³»¿ëÀº emp Å×ÀÌºí¿¡ »õ·Î¿î »ç¶÷ÀÇ Á÷¿ø Á¤º¸¸¦ ÀÔ·ÂÇÑ ÈÄ Á¢¼ÓÀ» À¯ÁöÇÑ »óÅ¿¡¼­ µ¥ÀÌÅÍÀÇ º¯°æÀ» Àû¿ëÇÏ°í ¾î¶² »ç¶÷ÀÇ Á¤º¸¿¡¼­ ±Þ¿©¿Í »ó¿©¸¦ »õ·Î ÀÔ·Â¹Þ¾Æ ¼öÁ¤ÇÑ ÈÄ Àû¿ëÇÑ´Ù. ±×¸®°í ¾î¶² »ç¶÷ÀÇ »ç¿ø ¹øÈ£¸¦ ÀԷ¹޾Ƽ­ »èÁ¦ÇÏ´Â °ÍÀÌ´Ù. ÇÁ·Î±×·¥»ó ¾î·Á¿î Á¡Àº ¾øÀ» °ÍÀÌ´Ù. ÇÁ·Î±×·¥µµ ½±°Ô ÀÛ¼º µÇ¾ú°í ÁÖ¼®µµ Àß ´Þ¾Æ³õ¾Ò´Ù. Çѹø ºÐ¼®Çغ¸°í ½ÇÇàÇØº¸¶ó.

À§¿¡ º¸¾Ò´ø ÇÁ·Î±×·¥Àº Pro*C/C++ ¿¡¼­ °¡Àå ±âº»µÇ´Â °ÍÀÌ´Ù. ¹¹ ±×·¸´Ù°í ÀÌ·± ÇÁ·Î±×·¥Àº ¾²ÀÓ»õµµ ¾ø´Ù´Â °ÍÀº ¾Æ´Ï´Ù. ½ÇÁ¦·Î ÀÌÁ¤µµ ¼öÁØÀÌ¸é ¿Ø¸¸ÇÑ ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß¿¡¼± ¸¸Á·ÇÒ ¸¸ÇÏ´Ù. ½ÇÁ¦ ´ëºÎºÐÀÇ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ »ç¿ëµÇ´Â ¼öÁØÀÌ ÀÌÁ¤µµÀÌ´Ù. ´Ü¼øÈ÷ DMLÁ¤µµ·Î »ç¿ëÀÚ Á¤º¸¸¦ °¡Á®¿Â´Ù´øÁö »ðÀÔ, »èÁ¦, ¼öÁ¤ÀÌ ´ëºÎºÐÀÇ ÀÛ¾÷À̱⠶§¹®ÀÌ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.