原文件:
#include <string>
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
  char  v_Submit_ID[38];
  char  v_Count[20];
  char  v_Sum[20];
  char  v_FileName[240];
  char  v_CurrDate[8];
  char  v_szUID[120];
  char v_MICN[10];
  char v_RecFileName[240];
  int icount;
EXEC SQL END DECLARE SECTION;int main()
{
    strcpy(v_szUID,"apps/apps@crp3");
    EXEC SQL CONNECT :v_szUID;    EXEC SQL SELECT COUNT(*) INTO icount FROM hr_organization_units;    printf("count is %d\n",icount);
    return 0;
}
错误信息:test.cpp: In function `int main()':
test.cpp:287: error: invalid conversion from `const unsigned int*' to `unsigned 
   int*'
test.cpp:324: error: invalid conversion from `const unsigned int*' to `unsigned 
   int*'
test.cpp有错的代码是:
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);makefile:.SUFFIXES: .pc .c .oDEMO_MAKEFILE= $(HOME)/allentest/makefile
ORADIR= $(ORACLE_HOME)
INCLUDE= include=/usr/include \
         include=/usr/include/linux \
         include=$(ORADIR)/precomp/public \
         include=/usr/lib/gcc-lib/i586-suse-linux/3.3.3/include \
         include=/usr/include/g++/backwardCCFLAGS   =   -c -g -Wall -D_POXIX_C_SOURCE
PROC=proc CODE=CPP parse=none cpp_suffix=cpp RELEASE=YES char_map=string SQLCHECK=SEMANTICS USERID="apps/apps@crp3" include=$ORACLE_HOME/rdbms/demo include=$ORACLE_HOME/rdbms/public $(INCLUDE)          
CC=g++   
test: test.pc
        $(PROC) test.pc
        $(CC) -L$(ORACLE_HOME)/lib -lclntsh  $(CCFLAGS)  test.cpp  $(ORACLE_HOME)/lib -lclntsh             
      
clean:
        rm -f *.C  *.o  

解决方案 »

  1.   

    EXEC SQL SELECT COUNT(*) INTO icount FROM hr_organization_units;这句的icount没带':'
    改为这样吧EXEC SQL SELECT COUNT(*) INTO :icount FROM hr_organization_units;
      

  2.   

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    EXEC SQL INCLUDE sqlca;
    EXEC SQL BEGIN DECLARE SECTION;
       VARCHAR username[20];
       VARCHAR password[20];
       VARCHAR db_name[20];
    EXEC SQL END DECLARE SECTION;
    main()
    {
       strcpy(username.arr,"apps");
       username.len=strlen(username.arr);
       strcpy(password.arr,"apps");
       password.len=strlen(password.arr);
       strcpy(db_name.arr,"crp3");
       db_name.len=strlen(db_name.arr);
       EXEC SQL CONNECT :username IDENTIFIED BY :password
           USING :db_name;
       printf("connect database success!");
       EXEC SQL SELECT COUNT(*) INTO :icount FROM hr_organization_units;
       printf("count is %d\n",icount);
       return 0;}
      

  3.   

    http://community.csdn.net/Expert/topic/4989/4989972.xml?temp=.414242
    参考这里面的makefile吧
      

  4.   

    嗯!
    还是不行,我的代码在AIX下面可以编译执行,但挪到Linux下就编译不过了。
      

  5.   

    我的测试:
    GetMonthToShell.pc :EXEC SQL INCLUDE SQLCA;main(int argc,char *argv[])
    {
    EXEC SQL BEGIN DECLARE SECTION;
        char v_month_id[8];
        char *uid="wiler";
        char *pwd="wiler";
    EXEC SQL END DECLARE SECTION;    /*....... connect .......*/
        EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;
        /*....... select  .......*/
        EXEC SQL
             select to_char(month_id)
             into :v_month_id
             from month
             where rownum<2;
        /*...... disconnect ......*/
        EXEC SQL COMMIT WORK RELEASE;    v_month_id[6]=0x0;
        printf( "v_month_id=%s\n" , v_month_id );
    }
    makefile:include $(ORACLE_HOME)/plsql/lib/env_plsql.mk.SUFFIXES: .pc .c .oORALIBPATH=$(ORACLE_HOME)/lib
    ORALIBS=-lclntsh
    USERID=hmj/hmj
    PROCPLSFLAGS= sqlcheck=full userid=$(USERID) CHAR_MAP=VARCHAR2, DBMS=V7GetMonthToShell: GetMonthToShellproc GetMonthToShellbuild
    GetMonthToShellproc:
            $(ORACLE_HOME)/bin/proc $(PROCPLSFLAGS) iname=GetMonthToShell.pc
            $(CC) $(CFLAGS) $(PRECOMPPUBLIC) -c GetMonthToShell.c
    GetMonthToShellbuild:
            $(CC) $(CFLAGS) -o GetMonthToShell GetMonthToShell.o -L $(ORALIBPATH) $(ORALIBS)使用:注意,如果存在*.c或者*.o,要先删除,rm *.o *.c
    make GetMonthToShelloracle版本:oracle9i
      

  6.   

    wiler:
         你好,使用你的代码和makefile的时候,之前我的错误没了,但是另外有一个编译错误解决不了,麻烦再帮帮忙。
      
    错误:
       /cmbcapp/appcrp3/crp3ora/8.0.6/lib/libclntsh.so: undefined reference to `slpmprodstab'
    collect2: ld returned 1 exit status
    make: *** [GetMonthToShellbuild] Error 1
      

  7.   

    那你把这个参数ORALIBS=-lclntsh去掉吧
    你的版本好象是8i的