免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2582 | 回复: 1
打印 上一主题 下一主题

db2编译时宏定义问题 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-18 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-23 16:28 |只看该作者 |倒序浏览
我的环境是suse11.2 ,数据库是db2 express9.7 , 我有一个student.SQC,内容如下:
EXEC SQL INCLUDE SQLCA;
#include "code.h"
EXEC SQL BEGIN DECLARE SECTION;
        char StudentNo[4+1];
        short StudentNo_id;
        char StudentNm[60+1];
        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
------  --------------------------------------------------------------------
        SQL0060W  The "C" precompiler is in progress.
   96   SQL0206N  "R_STUDENT" is not valid in the context
                  where it is used.  SQLSTATE=42703
        SQL0091W  Precompilation or binding was ended with "0"
                  errors and "1" warnings.

make: *** [student.o] Error 2

请问我的宏定义有问题吗?如果我不用宏就对了,为什么?是不是SQC->sqc的时候就应该编译一下,请指教一二!谢谢!

[ 本帖最后由 lyl2002 于 2009-12-23 20:33 编辑 ]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-18 06:20:00
2 [报告]
发表于 2009-12-23 20:30 |只看该作者
实际就是宏里含有宿主变量好像不认识了,哪位知道的,请告知,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP