尊敬的大牛,我在proc程序里执行sql语句建表,插入数据. 在服务器oracle中处理,为何预编译都过不了,proc  ***.pc   -> ***.c代码如下
#include <stdio.h>
exec sql include sqlca;
int main(){
    exec sql begin declare section;
        char userpasswd[30]="openlab/open123";
        int   id=100;
        char  name[30]="test100";
    exec sql end   declare section;
    exec sql connect:userpasswd;
    if(!sqlca.sqlcode){
        printf("connect success!\n");
    }else{
        printf("%s\n",sqlca.sqlerrm.sqlerrmc);
    }   
    exec sql create table testprocsql(id number  primary key,
            name varchar2(30));
    if(!sqlca.sqlcode){
        printf("create table success!\n");
    }else{
        printf("%s\n",sqlca.sqlerrm.sqlerrmc);
    }   
    exec sql insert into testprocsql values(1,'test1');   /* line22*/
    if(!sqlca.sqlcode){
        exec sql commit;
    }else{
        printf("%s\n",sqlca.sqlerrm.sqlerrmc);
    }   
    exec sql  insert into testprocsql values(:id,:name);
    exec sql commit;
    exec sql select  name into :name from testprocsql where id=1;
    printf("name=%s\n",name);
    exec sql commit work release;
}
输入 proc sql.pc 出现以下预处理错误:
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Nov 11 13:16:49 2016Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.System default option values taken from: /home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfgError at line 22, column 6 in file sql.pc
     exec sql insert into testprocsql values(1,'test1');
.....1
PLS-S-00201, identifier 'TESTPROCSQL' must be declared
Error at line 22, column 6 in file sql.pc
     exec sql insert into testprocsql values(1,'test1');
.....1
PLS-S-00000, SQL Statement ignored
Semantic error at line 22, column 6, file sql.pc:
     exec sql insert into testprocsql values(1,'test1');
.....1
PCC-S-02346, PL/SQL found semantic errors而当我自己手动在服务器oracle执行sql语句建表 create table testprocsql(id number  primary key,name varchar2(30));
建表成功后,我的代码就能预编译同过,并且编译链接运行成功。这是为什么。为什么表不存在时,proc 预编译都过不了,
表存在时,预编译通过。 难道proc程序执行sql语句建表和插入有什么逻辑问题?
求哥帮忙看看。
感谢