Array Processing
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

Array Processing

Ä¿¼­¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥À» º»´Ù¸é ¾ÆÁÖ Àß µÈ ÇÁ·Î±×·¥ °°¾Æ º¸ÀδÙ. ½ÇÁ¦·Îµµ ¾ÆÁÖ ÈǸ¢ÇÏ°Ô µ¿ÀÛÇÏ°í º° ¹«¸® ¾øÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ±×·¯³ª ¿©±â¿¡µµ ÇѰ¡Áö ¹®Á¦Á¡ÀÌ ÀÖ´Ù. ¹Ù·Î ³×Æ®¿÷ Æ®·¹ÇÈÀ» Àâ¾Æ ¸Ô°í ±×¿¡ µû¸¥ ½Ã°£ÀÌ ¸¹ÀÌ °É¸°´Ù´Â °ÍÀÌ´Ù. À̰ÍÀº ¾î¶»°Ô º»´Ù¸é º° ¹®Á¦°¡ ¾Æ´Ñ°Å °°Áö¸¸ ÆÐÄ¡ÇÒ ÇàÀÌ ¾Æ~~~ ÁÖ ¸¹Àº °æ¿ì¿¡´Â ÇÁ·Î±×·¥ ¼º´É¸é¿¡¼­ »ó´çÇÑ ¹®Á¦¸¦ ÀÏÀ¸Å²´Ù. ¹Ù·Î Àüü Å©±â°¡ °°´õ¶óµµ Å« ÆÄÀÏ Çϳª¸¦ º¹»çÇÏ´Â °Í º¸´Ù ¼ö¸¹Àº ÀÛÀº ÆÄÀϵéÀ» º¹»çÇÏ´Â °ÍÀÌ ´õ ¿À·¡°É¸®´Â °Í°ú °°Àº ÀÌÀ¯ÀÏ °ÍÀÌ´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°á ÇÒ¼ö ÀÖ´Â °¡Àå ÈǸ¢ÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥ÀÌ ¹Ù·Î Array ProcessingÀÌ´Ù. À̸§À» ºÁ¼­µµ ¾Ë ¼ö ÀÖµíÀÌ Çѹø¿¡ ÇÑ ÇàÀ» ÆÐÄ¡ ÇØ ¿À´Â °ÍÀÌ ¾Æ´Ï¶ó Çѹø¿¡ ¿©·¯ ÇàÀ» ÆÐÄ¡ÇØ ¿À´Â °ÍÀÌ´Ù. ¿¹Á¦¸¦ ÅëÇØ¼­ ÀÚ¼¼È÷ º¸µµ·Ï ÇÏÀÚ.
/* -------------------------------------------------------------------------------- 
ÆÄÀÏ À̸§ : array_select.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 [14]; 
    int mgr [14]; 
    int sal [14]; 
    int comm [14]; 
    int deptno [14]; 
    char ename [14][11]; 
    char job [14][10]; 
    char hiredate [14][10]; 
 
    /* 
     * emp Å×À̺í Ä®·³µéÀÇ Indicator º¯¼ö 
     * ¹Þ¾Æ¿Ã Å×À̺íÀÇ ÇàÀÇ ¼ö¸¸Å­ ¹è¿­À» ¼³Á¤ÇÑ´Ù. 
     */ 
 
short ind_empno [14]; 
    short ind_mgr [14]; 
    short ind_sal [14]; 
    short ind_comm [14]; 
    short ind_deptno [14]; 
    short ind_ename [14]; 
    short ind_job [14]; 
    short ind_hiredate [14]; 
exec sql end declare section; 
 
/* 
 * SQL ¿¡·¯ ¹ß»ý½Ã ½ÇÇàÇÒ ÇÔ¼ö 
 * ¿¡·¯Äڵ带 ÇÁ¸°Æ® ÇÏ°í ·Ñ¹é ÈÄ¿¡ Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
 * sqlca·Î ¿¡·¯ °Ë»ç. 
 */ 
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); 
} 
 
int main (void) 
{ 
int i = 0; 
char buf [256] = {'\0', }; 
 
    username = (char *)strdup ("scott"); 
    password = (char *)strdup ("tiger"); 
 
    /* 
     * scott »ç¿ëÀÚ °èÁ¤À¸·Î Á¢¼Ó ½Ãµµ 
     * Á¢¼Ó ½Ãµµ ÈÄ¿¡ ¼º°ø ¿©ºÎ¸¦ À§ÇØ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     * sqlca·Î ¿¡·¯ °Ë»ç. 
     */ 
    exec sql 
        connect :username identified by :password; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Connected to Oracle Database\n"); 
 
    /* 
     * ÇØ´ç »ç¿øÀÇ »ç¿ø Á¤º¸¸¦ °¡Á®¿Â´Ù. 
     * Indicator º¯¼ö¸¦ ºÙ¿©¼­ NULLÀÌ ÀÖ´ÂÁö °Ë»çÇÑ´Ù. 
     * À̶§ È£½ºÆ® º¯¼öµéÀÌ ÀüºÎ ¹è¿­·Î ÁöÁ¤ µÇ¸é ±× ¹è¿­ÀÇ ¼ö¸¸Å­ ÀÚµ¿À¸·Î °¡Á®¿Â´Ù. 
     * ÇѹøÀÇ SQL¹® ½ÇÇàÀ¸·Î 14°³ÀÇ ÇàÀ» ¸ðµÎ °¡Á®¿Â´Ù. 
     * sqlca¸¦ ÅëÇØ¼­ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     */ 
exec sql 
        select empno, ename, job, mgr, hiredate, sal, comm, deptno 
        into :empno:ind_empno, :ename:ind_ename, :job:ind_job, :mgr:ind_mgr, 
             :hiredate:ind_hiredate, :sal:ind_sal, :comm:ind_comm, :deptno:ind_deptno 
        from emp; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
/* 
     * Ä®·³ÀÇ À̸§À» ÇÁ¸°Æ® ÇÏ°í ÆÐÄ¡ÇÑ ÇàÀÇ ¼ö¸¸Å­ µ¹·Á¼­ ÇÁ¸°Æ®ÇÑ´Ù. 
     */ 
    printf ("EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO\n"); 
    for (i = 0; i < 14; i ++) 
    { 
        /* 
         * Indicator º¯¼ö¸¦ °Ë»çÇÏ¿© -1 ÀÎ °æ¿ì´Â ½ÇÁ¦ µ¥ÀÌÅͰ¡ NULL ÀÎ 
         * °æ¿ì À̹ǷΠ¼ýÀÚÀÎ °æ¿ì -1À» ¹®ÀÚÀÎ °æ¿ì NULLÀ» Âï¾î ÁØ´Ù. 
         */ 
        printf ("%5d %10s %9s %4d %9s %7d %7d %2d\n", 
                (ind_empno [i]    == -1) ? -1 : empno [i], 
                (ind_ename [i]    == -1) ? "NULL" : ename [i], 
                (ind_job [i]      == -1) ? "NULL" : job [i], 
                (ind_mgr [i]      == -1) ? -1 : mgr [i], 
                (ind_hiredate [i] == -1) ? "NULL" : hiredate [i], 
                (ind_sal [i]      == -1) ? -1 : sal [i], 
                (ind_comm [i]     == -1) ? -1 : comm [i], 
                (ind_deptno [i]   == -1) ? -1 : deptno [i]); 
    } 
 
    /* 
     * µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
     * sqlca ·Î ¿¡·¯ °Ë»ç. 
     */ 
    exec sql 
        rollback work release; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Disconnect from Oracle Database\n"); 
 
    exit (EXIT_SUCCESS); 
} 
 

óÀ½¿¡ ºÃ´ø select ¹®°ú ´Ù¸¥Á¡ÀÌ ¾ø´Ù. ´ÜÁö È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÒ ¶§ ¹è¿­·Î ¼±¾ðÇÏ¿© ¹è¿­ÀÇ Å©±â¸¦ Çѹø¿¡ ÆÐÄ¡ÇÒ ÇàÀÇ ¼ö·Î ÁöÁ¤ÇØ ÁÖ¸é µÈ´Ù. º°´Ù¸¥ ³×Æ®¿÷ Æ®·¡ÇÈ ¾øÀÌ °íµµÀÇ »ý»ê¼º Çâ»ó°ú ÇÁ·Î±×·¥ÀÇ ¼º´É Çâ»óÀ» °¡Áú ¼ö ÀÖ´Ù. À§ÀÇ °æ¿ì emp ´Â ÃÑ 14 ÇàÀ¸·Î ±¸¼ºµÇ¾î ÀÖÀ¸¹Ç·Î ¹è¿­ Å©±â´Â 14ÀÌ´Ù. ¸¸¾à¿¡ Å×À̺íÀÇ ÇàÀÇ ¼ö°¡ ³Ê¹« ¸¹´Ù¸é ¹è¿­·Î ¼±¾ð ÇÑ ÈÄ¿¡ ´Ù½Ã Ä¿¼­¸¦ ¼±¾ðÇÏ¿© Çѹø¿¡ ¿©·¯ÇàÀ¸·Î ÆÐÄ¡ÇØ ¿À´Â Çü½ÄÀ¸·Î ÇÏ¸é µÉ °ÍÀÌ´Ù. Ä¿¼­¿Í Array ProcessingÀ» ¼¯¾î¼­ »ç¿ëÇÏ¸é µÈ´Ù. Ưº°ÇÏ°Ô ¾î·Á¿ï °Í ¾øÀÌ ±¸¼ºÇØ ³¾ ¼ö ÀÖ´Ù. Ä¿¼­¸¦ »ç¿ëÇÒ °æ¿ì ÆÐÄ¡°¡ ³¡³ª°Ô µÇ¸é sqlca.sqlerrd [2] ¸¦ ¼ÂÆÃÇϰí sqlcode¸¦ 1403À¸·Î ¼ÂÆÃÇÏ°Ô µÈ´Ù. ¿©±â¼­´Â À§¿¡¼­ º» °æ¿ì¿Í ´Þ¸® ¸¶Áö¸· ÆÐÄ¡°¡ ¼º°øÇϸ鼭 sqlcode¸¦ 1403À¸·Î ¼ÂÆÃÇϰí sqlerrd [2]ÀÇ °ªµµ ¸¶Áö¸· ÆÐÄ¡ÇÒ¶§ÀÇ ÇàÀÇ ¼ö°¡ ¾Æ´Ï¶ó ÆÐÄ¡¸¦ ½ÇÇà ÇÒ¼ö·Ï ÇàÀÇ ¼ö´Â ½×ÀÌ°Ô µÈ´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ ÁÖÀÇ Çϵµ·Ï Ç϶ó. ½ÇÁ¦ ¿¹Á¦ Äڵ尡 ¾Æ·¡¿¡ ÀÖ´Ù.

/* -------------------------------------------------------------------------------- 
ÆÄÀÏ À̸§ : array_cursor.pc 
°³¹ß ÀÏÀÚ : 2002-10-28 
ÀÛ¼ºÀÚ : ·ù¸íȯ 
-------------------------------------------------------------------------------- */ 
 
#include <stdio.h> 
#include <stdlib.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 [5]; 
    int mgr [5]; 
    int sal [5]; 
    int comm [5]; 
    int deptno [5]; 
    char ename [5][11]; 
    char job [5][10]; 
    char hiredate [5][10]; 
 
/* 
     * emp Å×À̺í Ä®·³µéÀÇ Indicator º¯¼ö 
     * ¹Þ¾Æ¿Ã Å×À̺íÀÇ ÇàÀÇ ¼ö¸¸Å­ ¹è¿­À» ¼³Á¤ÇÑ´Ù. 
     */ 
    short ind_empno [5]; 
    short ind_mgr [5]; 
    short ind_sal [5]; 
    short ind_comm [5]; 
    short ind_deptno [5]; 
    short ind_ename [5]; 
    short ind_job [5]; 
    short ind_hiredate [5]; 
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); 
} 
 
int main (void) 
{ 
int i = 0; 
char buf [256] = {'\0', }; 
 
    username = (char *)strdup ("scott"); 
    password = (char *)strdup ("tiger"); 
 
    /* 
     * scott »ç¿ëÀÚ °èÁ¤À¸·Î Á¢¼Ó ½Ãµµ 
     * Á¢¼Ó ½Ãµµ ÈÄ¿¡ ¼º°ø ¿©ºÎ¸¦ À§ÇØ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     */ 
    exec sql 
        connect :username identified by :password; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Connected to Oracle Database\n"); 
 
    /* 
     * ÇØ´ç »ç¿øÀÇ »ç¿ø Á¤º¸¸¦ °¡Á®¿À´Â Ä¿¼­¸¦ ¼±¾ðÇÑ´Ù. 
     * sqlcode¸¦ ÅëÇØ¼­ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     */ 
    exec sql 
        declare emp_cur cursor for 
            select empno, ename, job, mgr, hiredate, sal, comm, deptno 
            from emp; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
/* 
     * Ä¿¼­¸¦ ¿­°í sqlca·Î ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     */ 
    exec sql 
        open emp_cur; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
    /* 
     * Ä®·³ÀÇ À̸§À» ÇÁ¸°Æ® ÇÏ°í ÆÐÄ¡ÇÑ ÇàÀÇ ¼ö¸¸Å­ µ¹·Á¼­ ÇÁ¸°Æ®ÇÑ´Ù. 
     */ 
    printf ("EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO\n"); 
    while (1) 
    { 
        /* 
         * Çѹø¿¡ 5 Ç྿ ÆÐÄ¡ÇØ³½´Ù. 
         * Indicator º¯¼ö¸¦ ºÙ¿©¼­ NULLÀÌ ÀÖ´ÂÁö °Ë»çÇÑ´Ù. 
         * ÆÐÄ¡ÇÑ ÈÄ sqlca¸¦ ÅëÇØ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
         */ 
        exec sql 
            fetch emp_cur 
into :empno:ind_empno, :ename:ind_ename, :job:ind_job, :mgr:ind_mgr, 
:hiredate:ind_hiredate, :sal:ind_sal, :comm:ind_comm, 
:deptno:ind_deptno; 
if (sqlca.sqlcode != 1403 && sqlca.sqlcode != 0) 
        { 
            sql_error (); 
        } 
 
/* 
         * ¸¸¾à¿¡ sqlcode °¡ 1403 À¸·Î ¼ÂÆÃ µÈ°æ¿ì 
         * ¸¶Áö¸·À¸·Î ÆÐÄ¡ÇÑ ÇàÀÇ ¼ö¸¦ °è»êÇÏ¿© ÇÁ¸°Æ® Çϰí 
         * ·çÇÁ¸¦ Á¾·áÇÑ´Ù. 
         */ 
        if (sqlca.sqlcode == 1403) 
        { 
            for (i = 0; i < sqlca.sqlerrd [2] % 5; i ++) 
            { 
                /* 
                 * Indicator º¯¼ö¸¦ °Ë»çÇÏ¿© -1 ÀÎ °æ¿ì´Â ½ÇÁ¦ µ¥ÀÌÅͰ¡ NULL ÀÎ 
                 * °æ¿ì À̹ǷΠ¼ýÀÚÀÎ °æ¿ì -1À» ¹®ÀÚÀÎ °æ¿ì NULLÀ» Âï¾î ÁØ´Ù. 
                 */ 
                printf ("%5d %10s %9s %4d %9s %7d %7d %2d\n", 
                        (ind_empno [i]    == -1) ? -1 : empno [i], 
                        (ind_ename [i]    == -1) ? "NULL" : ename [i], 
                        (ind_job [i]      == -1) ? "NULL" : job [i], 
                        (ind_mgr [i]      == -1) ? -1 : mgr [i], 
                        (ind_hiredate [i] == -1) ? "NULL" : hiredate [i], 
                        (ind_sal [i]      == -1) ? -1 : sal [i], 
                        (ind_comm [i]     == -1) ? -1 : comm [i], 
                        (ind_deptno [i]   == -1) ? -1 : deptno [i]); 
            } 
            break; 
        } 
else 
        { 
            for (i = 0; i < 5; i ++) 
            { 
                /* 
                 * Indicator º¯¼ö¸¦ °Ë»çÇÏ¿© -1 ÀÎ °æ¿ì´Â ½ÇÁ¦ µ¥ÀÌÅͰ¡ NULL ÀÎ 
                 * °æ¿ì À̹ǷΠ¼ýÀÚÀÎ °æ¿ì -1À» ¹®ÀÚÀÎ °æ¿ì NULLÀ» Âï¾î ÁØ´Ù. 
                 */ 
                printf ("%5d %10s %9s %4d %9s %7d %7d %2d\n", 
                        (ind_empno [i]    == -1) ? -1 : empno [i], 
                        (ind_ename [i]    == -1) ? "NULL" : ename [i], 
                        (ind_job [i]      == -1) ? "NULL" : job [i], 
                        (ind_mgr [i]      == -1) ? -1 : mgr [i], 
                        (ind_hiredate [i] == -1) ? "NULL" : hiredate [i], 
                        (ind_sal [i]      == -1) ? -1 : sal [i], 
                        (ind_comm [i]     == -1) ? -1 : comm [i], 
                        (ind_deptno [i]   == -1) ? -1 : deptno [i]); 
            } 
        } 
    } 
 
    /* 
     * µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
     */ 
    exec sql 
        rollback work release; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Disconnect from Oracle Database\n"); 
 
    exit (EXIT_SUCCESS); 
} 
 

Array·Î Select¸¦ ÇÒ ¼ö ÀÖ´Ù¸é ¿ª½Ã Insert, Update, Deleteµµ ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. Áö±Ý±îÁö º¸¾Æ¿Ô´ø °Íó·³ Selectº¸´Ù´Â DMLÀÛ¾÷ÀÌ ´õ ½¬¿ü´Ù. À̰͵µ ´Ü¼øÈ÷ ¹è¿­À» ¸¸µé°í °ªÀ» ³Ö°í SQL¹®À» ¼öÇàÇϱ⸸ ÇÏ¸é µÈ´Ù. ¾Æ·¡¿¡ ¿¹Á¦°¡ ÀÖ´Ù. 5°³ÀÇ ÇàÀ» °¡Áø ¹è¿­À» ¸¸µç ÈÄ À̰ÍÀ» empÅ×ÀÌºí¿¡ InsertÇϰí CommitÇÑ´Ù. ±× ´ÙÀ½ InsertÇÑ »ç¿øÁ¤º¸¿¡¼­ ±Þ¿©¸¦ 20% ÀλóÇÏ°í ¿ª½Ã CommitÇÑ´Ù. ¸¶Áö¸·À¸·Î InsertÇÑ ¸ðµç »ç¿øÀ» DeleteÇϰí CommitÇÑ´Ù. ´Ü¼øÈ÷ ¹è¿­·Î È£½ºÆ® º¯¼ö¸¦ ¸¸µé°í »ç¿ëÇÑ °Í ¹Û¿¡´Â ¾øÀ¸´Ï õõÈ÷ »ìÆìº¸µµ·Ï Ç϶ó. Áß°£Áß°£¿¡ getchar()ÇÔ¼ö¸¦ ³Ö¾î ³õ¾Ò´Ù. ÀÌ ½ÃÁ¡¿¡ ´Ù¸¥ Å͹̳ο¡¼­ sqlplus·Î µé¾î°¡ emp Å×À̺íÀ» »ìÆìº¸¶ó. µ¥ÀÌÅͰ¡ Àû¿ëµÈ °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

/* -------------------------------------------------------------------------------- 
ÆÄÀÏ À̸§ : array_dml.pc 
°³¹ß ÀÏÀÚ : 2002-10-28 
ÀÛ¼ºÀÚ : ·ù¸íȯ 
-------------------------------------------------------------------------------- */ 
 
#include <stdio.h> 
#include <stdlib.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 [5] = {9000, 9001, 9002, 9003, 9004}; 
    int mgr [5] = {7788, 7788, 7788, 7788, 7788}; 
    int sal [5] = {3000, 2500, 2500, 2500, 2500}; 
    int comm [5] = {300, 500, 500, 0, 0}; 
    int deptno [5] = {40, 40, 40, 40, 40}; 
    char ename [5][11] = {"Ryu", "Kim", "Lee", "Seo", "Son"}; 
    char job [5][10] = {"Developer", "Developer", "Developer", 
"Developer", "Developer"}; 
 
    /* 
     * emp Å×À̺í Ä®·³µéÀÇ Indicator º¯¼ö 
     * ÀÛ¾÷ÇÒ ÇàÀÇ ¼ö¸¸Å­ ¹è¿­À» ¼³Á¤ÇÑ´Ù. 
     */ 
    short ind_empno [5] = {0, }; 
    short ind_mgr [5] = {0, }; 
    short ind_sal [5] = {0, }; 
    short ind_comm [5] = {0, 0, 0, -1, -1}; 
    short ind_deptno [5] = {0, }; 
    short ind_ename [5] = {0, }; 
    short ind_job [5] = {0, }; 
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); 
} 
 
int main (void) 
{ 
int i = 0; 
char buf [256] = {'\0', }; 
 
    username = (char *)strdup ("scott"); 
    password = (char *)strdup ("tiger"); 
 
    /* 
     * scott »ç¿ëÀÚ °èÁ¤À¸·Î Á¢¼Ó ½Ãµµ 
     * Á¢¼Ó ½Ãµµ ÈÄ¿¡ ¼º°ø ¿©ºÎ¸¦ À§ÇØ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     */ 
    exec sql 
        connect :username identified by :password; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
    printf ("Connected to Oracle Database\n"); 
 
    /* 
     * ÇØ´ç »ç¿øÀÇ »ç¿ø Á¤º¸¸¦ Insert ÇÑ´Ù. 
     * Indicator º¯¼ö¸¦ ºÙ¿©¼­ NULLÀÌ ÀÖ´ÂÁö °Ë»çÇÑ´Ù. 
     * À̶§ È£½ºÆ® º¯¼öµéÀÌ ÀüºÎ ¹è¿­·Î ÁöÁ¤ µÇ¸é 
     * ±× ¹è¿­ÀÇ ¼ö¸¸Å­ ÀÚµ¿À¸·Î InsertÇÑ´Ù. 
     * ÇѹøÀÇ SQL¹® ½ÇÇàÀ¸·Î 5°³ÀÇ ÇàÀ» ¸ðµÎ Insert ÇÑ´Ù. 
     * sqlcode¸¦ ÅëÇØ¼­ ¿¡·¯¸¦ °Ë»çÇÑ´Ù. 
     */ 
exec sql 
        insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) 
        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 (); 
    } 
 
    /* 
     * InsertÇÑ µ¥ÀÌÅ͸¦ Commit ÇÑ´Ù. 
     */ 
exec sql 
    commit work; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
printf ("%d Array Inserting Succeeded\n", sqlca.sqlerrd [2]); 
printf ("Press any key to continue\n"); 
getchar (); 
 
/* 
 * À§¿¡¼­ Insert ÇÑ ÇàÀÇ ±Þ¿©¸¦ 20% ÀλóÇÏ¿© ¾÷µ¥ÀÌÆ® ÇÑ´Ù. 
 */ 
exec sql 
    update emp 
    set sal = sal * 1.2 
    where empno = :empno; 
if (sqlca.sqlcode != 0) 
{ 
sql_error (); 
} 
 
    /* 
     * UpdateÇÑ µ¥ÀÌÅ͸¦ CommitÇÑ´Ù. 
     */ 
exec sql 
    commit work; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
printf ("%d Array Updating Succeeded\n", sqlca.sqlerrd [2]); 
printf ("Press any key to continue\n"); 
getchar (); 
 
/* 
 * À§¿¡¼­ Insert ÇÑ ÇàÀ» ¸ðµÎ Delete ÇÑ´Ù. 
 */ 
exec sql 
    delete from emp 
    where empno = :empno; 
if (sqlca.sqlcode != 0) 
{ 
    sql_error (); 
    } 
 
    /* 
     * DeleteÇÑ µ¥ÀÌÅ͸¦ CommitÇÑ´Ù. 
     */ 
exec sql 
    commit work; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    } 
 
printf ("%d Array Deleting Succeeded\n", sqlca.sqlerrd [2]); 
printf ("Press any key to continue\n"); 
getchar (); 
 
    /* 
     * µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÀ» Á¾·áÇÑ´Ù. 
     */ 
exec sql 
    rollback work release; 
    if (sqlca.sqlcode != 0) 
    { 
        sql_error (); 
    }printf ("Disconnect from Oracle Database\n"); 
 
    exit (EXIT_SUCCESS); 
} 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.