¾ÍÊÇcºÍpl/sql½áºÏ³öÀ´µÄÓïÑÔ
´ÓÀ´Ã»ÓÐѧ¹ýÕâÁ½¸ö£¬Í»È»¿´ÆðÀ´»¹Í¦Âé·³µÄ
²»¹ý×ö¹ýÖ®ºó²Å·¢ÏÖ£¬ÆäʵûÓп´ÆðÀ´ÄÇôÄÑ
ʲôÊÂÇ鶼Ҫ×Ô¼ºÈ¥³¢ÊÔһϣ¬ÄÑÕß²»»á»áÕß²»ÄÑ£¬¤Ç¤·¤ç¤¦£¿ °ÑÕâ¸ö¹ý³Ì¼ÇÏ£¬ÒÔÃâÒÔºóÍü¼ÇÁË
»·¾³µÄÅäÖÃ
Õâ¸öÓõÄÊÇvc++6.0Êý¾Ý¿âÊÇoracle10g
Ê×ÏÈдһ¸öpcµÄÎļþ£¬¾ÍÊÇprocµÄ³ÌÐò
È»ºóÔÚdosÀïÔËÐÐÃüÁîproc ****.pc
½«pcÎļþ±àÒë³ÉcÎļþ
ÔÚvc++6.0ÖÐÖ´ÐÐcÎļþÉú³Éexe¿ÉÖ´ÐÐÎļþ
×îºóÔÚdosÖÐÔËÐÐexe¾ÍokÁË
Õâ¸ö³ÌÐòÖ»ÊǶԵ¥ÌõÊý¾ÝµÄ²Ù×÷£¬²åÈë----ÐÞ¸Ä----²éÕÒ----ɾ³ý¡£
Ö»ÊÇÓÃÀ´ÊìϤһÏ»·¾³ºÍÓïÑÔ£¬ÒªÑ§µÄ¶«Î÷»¹ÓкöàŶ ϱ߾ÍÊdzÌÐòÁË --------------------------------------------------------------------
Sample.pc
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlda.h>
#include <sqlcpr.h>
typedef char asciz[20];
typedef char vc2_arr[11];
EXEC SQL BEGIN DECLARE SECTION;
/* User-defined type for null-terminated strings */
EXEC SQL TYPE asciz IS STRING(20) REFERENCE;
/* User-defined type for a VARCHAR array element. */
EXEC SQL TYPE vc2_arr IS VARCHAR2(11) REFERENCE;
asciz username;
asciz password;
asciz serverid;
int dept_no; /* which department to query? */
int emp_no;
vc2_arr job;
asciz ename;
EXEC SQL END DECLARE SECTION;
long SQLCODE;
/* Handle errors. Exit on any error. */
void sql_error()
{
char msg[512];
size_t buf_len, msg_len;
EXEC SQL WHENEVER SQLERROR CONTINUE;
buf_len = sizeof(msg);
sqlglm(msg, &buf_len, &msg_len);
printf("\nORACLE error detected:");
printf("\n%.*s \n", msg_len, msg);
EXEC SQL ROLLBACK WORK RELEASE;
exit(1);
}
void main()
{
char temp_buf[32];
/* Connect to ORACLE. */
EXEC SQL WHENEVER SQLERROR DO sql_error();
strcpy(username, "nes");
strcpy(password, "nes");
strcpy(serverid, "ORCL");
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :serverid;
printf("\nConnected to ORACLE as user: %s\n\n", username);
EXEC SQL DECLARE c1 CURSOR FOR
SELECT empno, ename, sal FROM emp;
EXEC SQL OPEN c1;
printf("Enter department number: ");
gets(temp_buf);
emp_no = atoi(temp_buf);
/* ÈëÁ¦¥Ç©`¥¿¤ò¥Ç©`¥¿¥Ù©`¥¹¤Ë×·¼Ó¤¹¤ë¡£*/
EXEC SQL insert into EMP (DEPTNO,ENAME,JOB,EMPNO) values (001,'Jacky','worker',:emp_no);
printf("\n\n\n\n");
printf("%s\n","¥Ç©`¥¿¤ò×·¼Ó¤·¤Þ¤·¤¿¡£");
printf("%-10.10s%-10.10s%-10.10s%s\n", "DEPTNO","ENAME", "JOB", "EMPNO");
printf("%-10.10s%-10.10s%-10.10s%s\n", "--------","--------", "---", "------");
printf("%-10.10s%-10.10s%-10.10s %d \n","1","Jacky","worker",emp_no);
/* ÈëÁ¦¥Ç©`¥¿¤ò¥Ç©`¥¿¥Ù©`¥¹¤Ë¸üФ¹¤ë¡£*/
EXEC SQL update EMP set DEPTNO = 2 WHERE EMPNO=:emp_no;
EXEC SQL SELECT DEPTNO,ENAME,JOB,EMPNO INTO
:dept_no, :ename, :job, :emp_no FROM EMP WHERE EMPNO=:emp_no;
printf("\n\n\n\n");
printf("%s\n","¥Ç©`¥¿¤ò¸üФ·¤Þ¤·¤¿¡£DEPTNO¤ò¡±2¡±¤Ë¸üФ·¤Þ¤·¤¿¡£");
printf("%-10.10s%-10.10s%-10.10s%-10.10s\n", "DEPTNO","ENAME", "JOB", "EMPNO");
printf("%-10.10s%-10.10s%-10.10s%-10.10s\n", "--------","--------", "---", "------");
printf("%d %-10.10s%-10.10s %d \n",dept_no,ename,job,emp_no);
/* ÈëÁ¦¥Ç©`¥¿¤ò¥Ç©`¥¿¥Ù©`¥¹¤ËÏ÷³ý¤¹¤ë¡£*/
EXEC SQL delete EMP WHERE EMPNO=:emp_no;
printf("\n\n\n\n");
printf("%s\n","¥Ç©`¥¿¤òÏ÷³ý¤·¤Þ¤·¤¿¡£");
/* Disconnect from the database. */
EXEC SQL COMMIT WORK RELEASE;
exit(0);
}
--------------------------------------------------------------------
Ö´ÐеĽá¹ûÀ´.....................
ÔÚ±àÒëµÄ¹ý³ÌÖÐ×ÜÊdzöÏÖÕâ¸öÎÊÌâ
--------------------Configuration: Sample - Win32 Debug--------------------
Linking...
Sample.obj : error LNK2001: unresolved external symbol _sqlcxt
Sample.obj : error LNK2001: unresolved external symbol _sqlglm
Debug/Sample.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
ÔÀ´ÊÇlibûÓб»ÒýÓÃ
ÔÚproject----setting----linkÖÐÌí¼ÓoraSQL10.lib£¨Õë¶Ô10g£©¾ÍokÁË