ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. select
À̹ø¿¡´Â Select¸¦ ÇØ º¸ÀÚ. SelectÀÇ °æ¿ì ½¬¿ï °Í °°Áö¸¸ ¿¹»ó¿Ü·Î ±î´Ù·Î¿î Á¡ÀÌ ÀÖ´Ù. ¸ÕÀú È£½ºÆ® º¯¼ö¿Í µ¥ÀÌÅͺ£À̽º Ä®·³ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» °áÁ¤ÇØ¾ß ÇÑ´Ù. µ¥ÀÌÅÍ ±¸Á¶°¡ °£´ÜÇÏ´Ù¸é ÁÁ°ÚÁö¸¸ CLOB, BLOB, LONG, RAW µîÀÇ Ä®·³ÀÌ ÀÖ´Ù¸é ÀÌ ¿ª½Ã µû·Î Äڵ带 ÀÛ¼ºÇØ¾ß ÇÏ´Â ±ÍÂúÀº Á¡ÀÌ ¸¹´Ù. Ä®·³ÀÇ ¼ö¸¸Å ·çÇÁµµ µ¹·Á¾ß µÇ°í µ¥ÀÌÅ͸¦ »Ñ·ÁÁÙ ¶§ Ä®·³ÀÇ À̸§µµ °¡Á®¿Í¾ß ÇÑ´Ù.(¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´ÏÁö¸¸ ´ëºÎºÐÀÇ ÀÎÅÍÆäÀ̽º¿¡¼ Ä®·³ÀÌ À̸§°ú µ¥ÀÌÅ͸¦ °°ÀÌ º¸¿©ÁÖÁö ¾Ê´Â°¡?)
±¸±¸ÀýÀý ¸»·Î ÇÏ´Â °Í º¸´Ü ½ÇÁ¦·Î ¿¹Á¦¸¦ Çϳª º¸µµ·Ï ÇÏÀÚ. /* --------------------------------------------------------------------------------
ÆÄÀÏ À̸§ : 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;
int mgr;
int sal;
int comm;
int deptno;
char ename [11];
char job [10];
char hiredate [10];
/*
* 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);
buf [strlen (buf) - 1] = '\0';
if (strlen (buf) == 0)
{
return -1;
}
else
{
return 0;
}
}
int main (void)
{
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");
/*
* µ¥ÀÌÅͺ£À̽º¿¡ EMP Å×ÀÌºí¿¡¼ °Ë»öÇÑ »ç¿øÀÇ »ç¿ø ¹øÈ£¸¦ ¾Ë¾Æ¿Â´Ù.
* »ç¿ø¹øÈ£¸¦ ÀÔ·ÂÇÏÁö ¾Ê¾Ò´Ù¸é TYPE ·¹À̺í·Î µ¹¾Æ¿Í¼ ´Ù½Ã ÀÔ·ÂÇϵµ·Ï ÇÑ´Ù.
*/
TYPE:
ind_empno = get_value (buf, "Type empno to find : ");
empno = atoi (buf);
if (!empno)
{
printf ("You must type empno to find\n");
goto TYPE;
}
/*
* ÇØ´ç »ç¿øÀÇ »ç¿ø Á¤º¸¸¦ °¡Á®¿Â´Ù.
* Indicator º¯¼ö¸¦ ºÙ¿©¼ NULLÀÌ ÀÖ´ÂÁö °Ë»çÇÑ´Ù.
*/
exec sql
select ename, job, mgr, hiredate, sal, comm, deptno
into :ename:ind_ename, :job:ind_job, :mgr:ind_mgr, :hiredate:ind_hiredate,
:sal:ind_sal, :comm:ind_comm, :deptno:ind_deptno
from emp
where empno = :empno;
/*
* SQL ½ÇÇàÈÄ ¿¡·¯ °Ë»ç, Äڵ尡 0 ÀÌ ¾Æ´Ò °æ¿ì´Â ¿¡·¯
* Äڵ尡 1403 Àϰæ¿ì´Â where Àý¿¡ ÇØ´çµÇ´Â µ¥ÀÌÅͰ¡ ¾ø´Â °æ¿ì
* ÀÌ·± °æ¿ì´Â ¿¡·¯·Î ó¸®Çϱ⺸´Ü µ¥ÀÌÅͰ¡ ¾ø´Ù´Â ¸Þ½ÃÁö¸¦
* »Ñ·Á ÁÖ´Â°Ô ´õ ³´´Ù.
*/
if (sqlca.sqlcode != 0 && sqlca.sqlcode != 1403)
{
sql_error ();
}
/*
* sqlca.sqlerrd [2] ´Â À§¿¡¼µµ ºÃµíÀÌ SQL ¹®Àå¿¡ ¿µÇâÀ» ¹ÞÀº
* ÇàÀÇ °³¼ö¸¦ °¡Áö´Â º¯¼öÀÌ´Ù. Select¸¦ ÇßÀ» °æ¿ì¿¡´Â sqlcode¸¦ °Ë»çÇØ¼
* 1403 ÀÎ °æ¿ì³ª sqlerrd [2] ¸¦ °Ë»çÇØ¼ 0 ÀÎ °æ¿ì´Â °°Àº °ÍÀÌ´Ù.
* ÀÌ·² °æ¿ì´Â ÇØ´ç µ¥ÀÌÅͰ¡ ¾ø´Ù´Â ¸Þ½ÃÁö¸¦ Âï¾îÁÖ°í Á¾·áÇÑ´Ù.
*/
if (sqlca.sqlerrd [2] == 0)
{
printf ("No row Selected\n");
}
else
{
/*
* Indicator º¯¼ö¸¦ °Ë»çÇÏ¿© 1 ÀÎ °æ¿ì´Â ½ÇÁ¦ µ¥ÀÌÅͰ¡ NULL ÀÎ
* °æ¿ì À̹ǷΠ¼ýÀÚÀÎ °æ¿ì 1À» ¹®ÀÚÀÎ °æ¿ì NULLÀ» Âï¾î ÁØ´Ù.
*/
printf ("EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO\n");
printf ("%5d %10s %9s %4d %9s %7d %7d %2d\n",
(ind_empno == -1) ? -1 : empno,
(ind_ename == -1) ? "NULL" : ename,
(ind_job == -1) ? "NULL" : job,
(ind_mgr == -1) ? -1 : mgr,
(ind_hiredate == -1) ? "NULL" : hiredate,
(ind_sal == -1) ? -1 : sal,
(ind_comm == -1) ? -1 : comm,
(ind_deptno == -1) ? -1 : deptno);
}
/*
* µ¥ÀÌÅͺ£À̽º¿Í Á¢¼ÓÀ» Á¾·áÇÑ´Ù.
*/
exec sql
rollback work release;
if (sqlca.sqlcode != 0)
{
sql_error ();
}
printf ("Disconnect from Oracle Database\n");
exit (EXIT_SUCCESS);
}
À§ ÇÁ·Î±×·¥Àº SelectÀÇ ¾ÆÁÖ °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù. À§¿Í °° SelectÀÇ °æ¿ì´Â SQL ¹®ÀåÀÌ ÀÌ¹Ì °áÁ¤ µÇ¾î ÀÖ´Â »óÅ´Ù. ÀÌ·± Select´Â »ó´çÈ÷ ½±´Ù. ±×·¯³ª ½ÇÁ¦·Î ÇÁ·Î±×·¥ ÇÏ´Ù°¡ º¸¸é SQL À» ½ÇÇàÇϱâ Àü±îÁö SQL ¹®ÀåÀÌ °áÁ¤µÇÁö ¾Ê´Â °æ¿ì°¡ Á¾Á¾ ÀÖ´Ù. SQL ¹®ÀåÀÌ ·±Å¸Àӽÿ¡ °áÁ¤µÇ´Â °æ¿ì¸¦ ¿¹·Î µéÀÚ¸é ·Î±×ÀÎ ÇÑ »ç¶÷ÀÇ Á÷±Þº°·Î º¼ ¼ö ÀÖ´Â Ä®·³°ú º¼ ¼ö ¾ø´Â Ä®·³ÀÌ ±¸ºÐµÇ¾î ÀÖ´Ù´øÁö µ¥ÀÌÅ͸¦ °¡Á®¿Ã Å×À̺íÀÇ À̸§ÀÌ ³¯Â¥º°·Î ´Ù¸£´Ù´øÁö ÇÏ´Â °æ¿ì¸¦ ½±°Ô »ý°¢ ÇØ º¼ ¼ö ÀÖ´Ù. ÀÌ·² °æ¿ì SQL ¹®ÀåÀ» ³¯¸®±â Àü¿¡¼¾ß SQL ¹®ÀåÀÇ ÇüŸ¦ ¾Ë ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ »óȲÀ» Dynamic SQL À̶óÇϴµ¥ À̰ÍÀº ´ÙÀ½ Àå¿¡¼ Á»´õ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇϰڴÙ.
À§¿¡¼ ó·³ ÇÑÀÇ Çุ °¡Á®¿ÀÁö ¾Ê°í ¸ðµç ÇàÀ» ´Ù °¡Á®¿Í¾ß ÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÏ¿´´Ù °¡Á¤ÇÑ´Ù. ÀÌ·²¶§´Â ¾î¶»°Ô ÇØ¾ß ÇÒ °ÍÀΰ¡? ¹¹ ¹æ¹ýÀº ¸¹´Ù. SQL À» Á¶±ÝÀÌ¶óµµ ÇØº» »ç¶÷À̶ó¸é ¸ÕÀú Ä¿¼¸¦ »ý°¢ÇÒ °ÍÀÌ´Ù. ¸Â´Ù. Ä¿¼¸¦ »ç¿ëÇÑ´Ù¸é ½±°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ´Ù¸¥ ¹æ¹ýÀº ¾øÀ»±î? ¸¸¾à Ä¿¼¿¡ ´ëÇØ¼ ¸ð¸¥´Ù°Å³ª »ç¿ëÇÒ ´É·ÂÀÌ ¾ø´Ù¸é ¼ÒÀ§ ¸»ÇÏ´Â ¾à°£ÀÇ ²Ç¼ö¸¦ µ¿¿øÇصµ µÈ´Ù. ¸ÕÀú select count(*) from emp ¸¦ ¼öÇàÇØ¼ Àüü rowÀÌ °³¼ö¸¦ ¾ò¾î¿Â´Ù. ±×·¸°Ô ÇØ¼ for ¹®À» µ¹·Á¼ ÇàÀÇ °³¼ö¸¸Å °¢ ÇàÀ» °¡Á®¿À¸é µÇ´Â °ÍÀÌ´Ù. ¾î¶² ¹æ¹ýÀ» ¾²´øÁö ±×°Ç ÇÁ·Î±×·¡¸ÓÀÇ ÀÚÀ¯Áö¸¸ ÀÌ¿Õ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °Í µÇµµ·ÏÀ̸é Àб⠽±°í ¼º´É ÁÁÀº ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ±×°ÍÀÌ ÇÁ·Î±×·¡¸ÓÀÇ ´É·ÂÂ÷°¡ ¾Æ´Ï°Ú´Â°¡? »ç½Ç °ÅâÇÏ°Ô ¸»ÇßÁö¸¸ ´©±¸³ª ´Ù ¾Ë°í ÀÖ´Â ±âº» »ç½ÇÀÌ´Ù.
À̹ø¿¡´Â Ä¿¼¸¦ ÀÌ¿ëÇÑ ¿¹Á¦¸¦ ¸¸µé¾î¼ µ¥ÀÌÅͺ£À̽º¿¡ ´ë»ó Å×À̺íÀÇ Àüü ÇàÀ» ÀÐ¾î ¿À´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸ÀÚ.
/* --------------------------------------------------------------------------------
ÆÄÀÏ À̸§ : 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;
/*
* Ä®·³ ¸®½ºÆ®
*/
int empno;
int sal;
int comm;
char dname [14];
char ename [11];
char job [10];
/*
* Ä®·³µéÀÇ Indicator º¯¼ö
*/
short ind_empno;
short ind_sal;
short ind_comm;
short ind_dname;
short ind_ename;
short ind_job;
exec sql end declare section;
void sql_error (void);
int main (void)
{
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");
/*
* Ä¿¼¸¦ ¼±¾ðÇÑ´Ù.
* sqlca.sqlcode·Î ¿¡·¯ °Ë»ç
*/
exec sql
declare dept_emp cursor for
select d.dname, e.empno, e.ename, e.job, e.sal, e.comm
from dept d, emp e
where d.deptno = e.deptno;
if (sqlca.sqlcode != 0)
{
sql_error ();
}
/*
* Ä¿¼¸¦ ¿¬´Ù.
* sqlca.sqlcode·Î ¿¡·¯ °Ë»ç
*/
exec sql
open dept_emp;
if (sqlca.sqlcode != 0)
{
sql_error ();
}
/*
* Ä®·³ÀÇ À̸§À» ÇÁ¸°Æ® ÇÑ´Ù.
*/
printf ("DNAME EMPNO ENAME JOB SAL COMM\n");
while (1)
{
/*
* ÇÑÇ྿ ¼ø¼´ë·Î ÆÐÄ¡ÇÑ´Ù.
* sqlca.sqlcode·Î ¿¡·¯ °Ë»çÇÑ´Ù.
* ¸ÕÀú 1403¹øÀ» °Ë»çÇÏ¿© ¸ðµç ÇàÀÌ ÆÐÄ¡µÈ °æ¿ì¸¦ ã¾Æº¸°í
* ÇàÀÌ ³²ÀÌ ÀÖÀ¸¸é¼ ¿¡·¯°¡ ³ °æ¿ì¸¦ °Ë»çÇÑ´Ù.
*/
exec sql
fetch dept_emp
into :dname:ind_dname, :empno:ind_empno, :ename:ind_ename,
:job:ind_job, :sal:ind_sal, :comm:ind_comm;
if (sqlca.sqlcode == 1403)
{
break;
}
else if (sqlca.sqlcode != 0)
{
sql_error ();
}
/*
* Ä®·³ ³»¿ëÀ» Ãâ·ÂÇÑ´Ù.
* Indicator º¯¼ö¸¦ °Ë»çÇÏ¿© NULLÀÌ Àִ°Šº¸°í
* Á¤¼öÀÏ °æ¿ì -1À» ¹®ÀÚ¿ÀÎ °æ¿ì NULLÀ» Âï´Â´Ù.
*/
printf ("%10s %5d %10s %9s %-7d %-7d\n",
(ind_dname == -1) ? "NULL" : dname,
(ind_empno == -1) ? -1 : empno,
(ind_ename == -1) ? "NULL" : ename,
(ind_job == -1) ? "NULL" : job,
(ind_sal == -1) ? -1 : sal,
(ind_comm == -1) ? -1 : comm);
}
/*
* Ä¿¼¸¦ ´Ý´Â´Ù.
* sqlca.sqlcode·Î ¿¡·¯ °Ë»ç
*/
exec sql
close dept_emp;
if (sqlca.sqlcode != 0)
{
sql_error ();
}
/*
* µ¥ÀÌŸº£À̽º¿Í Á¢¼ÓÀ» Á¾·áÇÑ´Ù.
* sqlca.sqlcode·Î ¿¡·¯ °Ë»ç
*/
exec sql
rollback work release;
if (sqlca.sqlcode != 0)
{
sql_error ();
}
printf ("Disconnect from Oracle Database\n");
exit (EXIT_SUCCESS);
}
/*
* 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
close dept_emp;
exec sql
rollback work release;
exit (EXIT_FAILURE);
}
Ä¿¼¸¦ »ç¿ëÇÑ ¿¹Á¦¸¦ º¸¾Ò´Ù. ¹¹ Ưº°ÇÑ °ÍÀº ¾ø´Ù. À§¿¡¼ º¸¾ÒµíÀÌ Pro*C/C++ ¿¡¼ Ä¿¼¸¦ ¼±¾ðÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¾Æ¸¶ PL/SQL À» »ç¿ëÇØº» µ¶ÀÚ¶ó¸é ¸Å¿ì Àͼ÷ÇÑ ±¸¹®ÀÏ °ÍÀÌ´Ù. ¸Õ¼ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇϰí exec sql declare <cursor name> cursor for select ¡¦ ¡¦ ¸¦ »ç¿ëÇÏ¿© Ä¿¼¸¦ ¼±¾ðÇÑ´Ù. ±× ÈÄ exec sql open <cursor name> À» »ç¿ëÇÏ¿© Ä¿¼¸¦ ¿¬´Ù. À̶§ ÇØ´ç SQL ¹®ÀÌ ½ÇÇàµÇ¾î¼ °¢ ÇàµéÀÌ ¸Þ¸ð¸®¿¡ ¿Ã¶ó°£´Ù. ÀÌ »óȲ¿¡¼ ¼ø¼´ë·Î °¢ ÇàÀ» ÆÐÄ¡ÇØ ¿À¸é µÇ´Â °ÍÀÌ´Ù. ¸ðµç ÇàÀ» ÆÐÄ¡ÇÏ°í ´õ ÀÌ»ó ÆÐÄ¡ÇÒ ³»¿ëÀÌ ¾ø´Ù¸é sqlcode°¡ 1403¹øÀ¸·Î ¼³Á¤µÇ¸ç À̶§ LoopÀ» ºüÁ® ³ª°¡¸é µÇ´Â °ÍÀÌ´Ù. ¾ÆÁÖ ÀüÇüÀûÀ¸·Î ÀÛ¼ºµÈ ±¸Á¶Àû ÇÁ·Î±×·¥ÀÌ´Ù. À§ÀÇ ¿¹Á¦¿¡ ÁÖ¼®À» Àß ´Þ¾Æ ³õ¾ÒÀ¸¹Ç·Î ¾î·Á¿î °ÍÀº ¾øÀ» °ÍÀÌ´Ù.
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|