PC源码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#include <sqlca.h>void connect();
void array();
void sql_error();void main()
{EXEC SQL WHENEVER SQLERROR DO sql_error();connect();array();getchar();EXEC SQL COMMIT RELEASE;
}
void connect()
{
char username[10],password[10],server[10];
printf("inout uername:");
gets(username);
printf("inout password:");
gets(password);
printf("inout servername:");
gets(server);EXEC SQL CONNECT :username IDENTIFIED BY assword USING :server;
}void sql_error()
{
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
}void array()
{
struct emp_struct {
int id;
float sal;
char addr[60];
} emp[20];int count;
int id;
char c;printf("inout id:");fputs("stdout: ", stdout);if (scanf("%d",&id)!=EOF) {while((c = getchar()) != '\n' && c != EOF)
;
}EXEC SQL select id,sal,addr into :emp from t_abc where id=:id;for (count=0;count<sqlca.sqlerrd[2];count++)
printf("id:%d,sal: %6.2f,addr:%s\n",emp[count].id,emp[count].sal,emp[count].addr);
}
然后预编译:
proc aa.pc 可以成功生成aa.c文件然后用gcc编译,则报找不到头文件错误
gcc aa.c -o aa
后台系统为red advansce server oracle10aa.c :148:19: sqlca.h: No such file or directory
aa.c : In function `main':
aa.c :177: error: `sqlca' undeclared (first use in this function)
aa.c :177: error: (Each undeclared identifier is reported only once
aa.c :177: error: for each function it appears in.)
aa.c :155: warning: return type of 'main' is not `int'
aa.c : In function `connect':
aa.c :209: error: `sqlca' undeclared (first use in this function)
aa.c : In function `sql_error':
aa.c :259: error: `sqlca' undeclared (first use in this function)
aa.c : In function `array':
aa.c :299: error: `sqlca' undeclared (first use in this function)

解决方案 »

  1.   

    加上这个EXEC SQL INCLUDE SQLCA;
      

  2.   

    to computerclass(leovo) :头文件有  include <sqlca.h>to wiler(@_@)
    我pc源码上加了 EXEC SQL INCLUDE SQLCA,在main函数里,但还是报同样的错误。
    void main()
    {
       EXEC SQL INCLUDE SQLCA;    //增加的语句EXEC SQL WHENEVER SQLERROR DO sql_error();connect();array();getchar();EXEC SQL COMMIT RELEASE;
    }
      

  3.   

    #include <sqlca.h>EXEC SQL INCLUDE SQLCA;
      

  4.   

    预处理没错,
    最终生成的时候没有说明库路径,头文件路径和需要链接的库
    应该这样写的():
    gcc -L$(ORACLE_HOME)/lib32 -I$(ORACLE_HOME)/precomp/public -lclntsh -oaa aa.c