Pro*C

Connect to more than one database to do work

OEasy 2006. 12. 26. 15:34
/*--------------------------------------------------------------------
 * Very simple example Pro*C program to connect to more than one 
 * database to do work.
 *                                              Frank Naude - Sep 2000
 *--------------------------------------------------------------------
 */
#include <stdio.h> 
#include <sqlca.h>
void sqlerror(); 
EXEC SQL BEGIN DECLARE SECTION; 
char *connstr1 = "scott/tiger"; 
char *connstr2 = "scothttps://t1.daumcdn.net/cfile/blog/ORCL"; 
char db_ename[30];
int  db_deptno;
EXEC SQL END DECLARE SECTION; 
void main() { 
	EXEC SQL WHENEVER SQLERROR DO sqlerror(); 
	EXEC SQL WHENEVER SQLWARNING CONTINUE; 
	/* give the database connections unique names */ 
	EXEC SQL DECLARE db1 DATABASE; 
	EXEC SQL DECLARE db2 DATABASE; 
	/* connect to different databases */
	EXEC SQL AT db1 CONNECT :connstr1; 
	EXEC SQL AT db2 CONNECT :connstr2; 
	EXEC SQL AT DB1 DECLARE emp_cursor CURSOR FOR
        	SELECT ENAME, DEPTNO
        	FROM   EMP;
	EXEC SQL AT DB1 OPEN emp_cursor;
	EXEC SQL WHENEVER NOT FOUND DO break;
	for (;;) {
		EXEC SQL AT DB1 FETCH emp_cursor INTO :db_ename, :db_deptno;
		printf("\t%s\t%i\n", db_ename, db_deptno);
	}
	EXEC SQL AT DB1 CLOSE emp_cursor;
	/* logoff from both databases */
	EXEC SQL AT DB1 COMMIT WORK RELEASE; 
	EXEC SQL AT DB1 COMMIT WORK RELEASE; 
	return; 
} 
void sqlerror() { 
	printf("Stop Error:\t%25i\n", sqlca.sqlcode); 
	EXEC SQL WHENEVER SQLERROR CONTINUE;
	EXEC SQL AT DB1 ROLLBACK WORK RELEASE;
	EXEC SQL AT DB2 ROLLBACK WORK RELEASE;
	return; 
}