原文件:
#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
#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
改为这样吧EXEC SQL SELECT COUNT(*) INTO :icount FROM hr_organization_units;
#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;}
参考这里面的makefile吧
还是不行,我的代码在AIX下面可以编译执行,但挪到Linux下就编译不过了。
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
你好,使用你的代码和makefile的时候,之前我的错误没了,但是另外有一个编译错误解决不了,麻烦再帮帮忙。
错误:
/cmbcapp/appcrp3/crp3ora/8.0.6/lib/libclntsh.so: undefined reference to `slpmprodstab'
collect2: ld returned 1 exit status
make: *** [GetMonthToShellbuild] Error 1
你的版本好象是8i的