lyl2002 发表于 2009-12-23 16:28

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 编辑 ]

lyl2002 发表于 2009-12-23 20:30

实际就是宏里含有宿主变量好像不认识了,哪位知道的,请告知,谢谢!
页: [1]
查看完整版本: db2编译时宏定义问题