procѧϰµÄ×ܽá

ÉÏһƪ / ÏÂһƪ  2010-10-08 16:13:22

procѧϰµÄ×ܽá

Ç°Õó×ÓѧϰÁËÒ»ÏÂproc
¾ÍÊÇ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ÁË

TAG:

 

ÆÀ·Ö£º0

ÎÒÀ´ËµÁ½¾ä

Open Toolbar