db2编译时宏定义问题
我的环境是suse11.2 ,数据库是db2 express9.7 , 我有一个student.SQC,内容如下:EXEC SQL INCLUDE SQLCA;
#include "code.h"
EXEC SQL BEGIN DECLARE SECTION;
char StudentNo;
short StudentNo_id;
char StudentNm;
short StudentNm_id;
EXEC SQL END DECLARE SECTION;
#define R_STUDENT :StudentNo:StudentNo_id,:StudentNm:StudentNm_id
int insert_Student(struct Student * v_ins )
{
strcpy(StudentNo,"11111");
strcpy(StudentNm,"张三");
EXEC SQL INSERT INTO student VALUES (R_STUDENT ) ;
if (sqlca.sqlcode)
{
return -1;
}
return 0;
}
#################################################
student 表机构如下:char StudentNo
char StudentNm
#################################################
makefile 内容如下:
# Define Path
RUNDIR=$(HOME)/bin
BNDDIR=$(HOME)/bnd
INCDIR=$(HOME)/incl
OBJDIR=$(HOME)/obj
LIBDIR=$(HOME)/lib
# Define System Command
MV=mv
RM=rm
CC=gcc
CP=cp
# Define Compile Flags
CFLAGS = -I$(TUXDIR)/include \
-I/home/db2inst1/sqllib/include \
-I$(HOME)/myxml/xmlinst/include/libxml2 \
-I$(INCDIR)
USERLFLAGS = -L/home/db2inst1/sqllib/lib \
-ldb2 \
-lsql \
-lc \
-s \
-lm \
-lsocket
LFLAGS=$(USERLFLAGS) -bloadmap:000
# Define All Objects
ALLOBJ = student.o
all:libstudent.a
libstudent.a: $(ALLOBJ)
ar -rv $*.a $(ALLOBJ)
$(MV) $@ $(LIBDIR)
# Define Complile Rules
.SUFFIXES:.SQC .c
.SQC.o:
cp $*.SQC $*.sqc
db2 connect to $(DBNAME) user $(DBUSER) using $(DBPASS);
db2 prep $*.sqc BINDFILE USING $(BNDDIR)/$*.bnd datetime ISO
db2 bind $(BNDDIR)/$*.bnd datetime ISO dynamicrules bind
db2 grant execute on package $* to public;
$(CC) -c -o $*.o $(CFLAGS) $(USERLFLAGS) $*.c
$(RM) -f $*.ccs $*.sqc $*.lis $*.c
# $(MV) $*.o $(HOME)/obj
.c.o:
$(CC) -c -o $*.o $(CFLAGS) $*.c
# $(MV) $*.o $(HOME)/obj
clear:
$(RM) -f *.sqc *.lis *.c *.o
clearobj:
$(RM) -f *.o
#################################################
编译的时候报
LINE MESSAGES FOR student.sqc
--------------------------------------------------------------------------
SQL0060WThe "C" precompiler is in progress.
96 SQL0206N"R_STUDENT" is not valid in the context
where it is used.SQLSTATE=42703
SQL0091WPrecompilation or binding was ended with "0"
errors and "1" warnings.
make: *** Error 2
请问我的宏定义有问题吗?如果我不用宏就对了,为什么?是不是SQC->sqc的时候就应该编译一下,请指教一二!谢谢!
[ 本帖最后由 lyl2002 于 2009-12-23 20:33 编辑 ] 实际就是宏里含有宿主变量好像不认识了,哪位知道的,请告知,谢谢!
页:
[1]