Pro*C에서 Select 시 Table 이름을 Dynamic 하게 이용하기
--------------------------------------------------------------------------------
SELECT 시 TABLE 이름을 DYNAMIC 하게 이용하기 (PRO*C)
Bulletin no : 11139
--------------------------------------------------------------------------------
다음은 method 3 를 이용해 select 하는 table 명을 dynamic 하게 가져가는
program 이다.
#include
#include
#define USERNAME "scott"
#define PASSWORD "tiger"
#include
#include
EXEC ORACLE OPTION (ORACA=YES);
char *username = USERNAME;
char *password = PASSWORD;
VARCHAR dynstmt[80];
varchar ename[10] ;
int deptno = 10;
char tab[10];
void sql_error();
main()
{
EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error");
oraca.orastxtf = ORASTFERR;
EXEC SQL CONNECT :username IDENTIFIED BY :password;
puts("\nConnected to Oracle.\n");
/*exec sql declare s statement;*/
gets(tab);
strcpy((char *)dynstmt.arr,
"SELECT ename FROM ");
strcat((char*) dynstmt.arr,tab);
dynstmt.len = strlen((char *)dynstmt.arr);
puts((char *) dynstmt.arr);
printf(" table name is %s\n", tab );
printf("\nEmployee\n");
printf("--------\n");
/*sprintf (statement ,"select ename from :tab");*/
EXEC SQL PREPARE S FROM :dynstmt;
EXEC SQL DECLARE C CURSOR FOR S;
EXEC SQL OPEN C ;
EXEC SQL WHENEVER NOT FOUND DO break;
for (;;)
{
EXEC SQL FETCH C INTO :ename;
ename.arr[ename.len] = '\0';
puts((char *) ename.arr);
}
printf("\nQuery returned %d row%s.\n\n", sqlca.sqlerrd[2],
(sqlca.sqlerrd[2] == 1) ? "" : "s");
EXEC SQL CLOSE C;
EXEC SQL COMMIT RELEASE;
exit(0);
}
void sql_error(char *msg)
{
printf("\n%s", msg);
sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0';
oraca.orastxt.orastxtc[oraca.orastxt.orastxtl] = '\0';
oraca.orasfnm.orasfnmc[oraca.orasfnm.orasfnml] = '\0';
printf("\n%s\n", sqlca.sqlerrm.sqlerrmc);
printf("in "%s..."\n", oraca.orastxt.orastxtc);
printf("on line %d of %s.\n\n", oraca.oraslnr,
oraca.orasfnm.orasfnmc);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL CLOSE C;
EXEC SQL ROLLBACK RELEASE;!!!! exit(1);
}
이상입니다.
기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… | 12-27 | 1961 | ||
[채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1440 | ||
53 | [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… | 03-15 | 1197 | |
52 | [주말주간]C#, ASP.NET마스터 | 01-31 | 1359 | |
51 | [평일,기업100%환급]SQL기초에서 Schema Object까지 | 01-31 | 1139 | |
50 | [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 | 01-31 | 1046 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 | 01-19 | 1359 | |
48 | [평일주간,평일야간,주말]안드로이드개발자과정 | 01-11 | 1192 | |
47 | [평일야간,주말주간]JAVA,Network&JSP&Spring,MyBatis,Hibernate | 01-03 | 1696 | |
46 | 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… | 12-27 | 1961 | |
45 | [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… | 12-19 | 1462 | |
44 | 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) | 12-14 | 1428 | |
43 | [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1440 | |
42 | [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 | 12-09 | 1158 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1354 | |
40 | [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… | 12-01 | 1519 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1021 |
댓글 없음:
댓글 쓰기