您的位置:首页 > 数据库 > Oracle

Oracle Pro*c到Sybase EsqlC的移植

2007-07-25 08:18 274 查看
[align=center]区别项[/align]
[align=center]Pro*c[/align]
[align=center]Esql/C[/align]
SQL函数
NUL()
ISNULL(),注意类型需一致
SQL函数
DECODE()
CASE… WHEN…ELSE…END
数据类型
VARCHAR,该类型是一个结构,包括arr和len两个成员,使用范例:
db_vString.arr[db_vString.len]='/0';
db_vString.len =strlen((char*)db_vString.arr);
CS_CHAR类似c中的char类型,但不自动补齐’/0’,较char类型节省空间
SQLCODE返回值
1403为无记录
100为无记录
SQL语句
唯一标识的语法加入distinct报错误
错误处理
未采用
EXEC SQL WHENEVER sqlerror
EXEC SQL WHENEVER sqlwarning
EXEC SQL WHENEVER not found
未采用,加入有错误
MakefiOracle makefile:
SETUPDIR=
CC = gcc
TARGETDIR =
TESTDIR =
PUBDIR =
SRCDIR =
OBJDIR =
CFLAGS = -I $(OBJDIR) -I $(PUBDIR) -lm
#for 64bit
#CFLAGS = -I $(OBJDIR) -I $(PUBDIR) -lm -m64

ORALIBS= -I ${ORACLE_HOME}/precomp/public -I. -I${ORACLE_HOME}/rdbms/public -I${ORACLE_HOME}/rdbms/demo -I${ORACLE_HOME}/plsql/public -I${ORACLE_HOME}/network/public -L${ORACLE_HOME}/lib/ -lclntsh
PCFLAGS= include=$(SRCDIR) include=$(PUBDIR) include=/usr/i386-glibc-2.1-linux/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include

all: $(OBJDIR) $(TARGETDIR)/ConfigChg

$(OBJDIR):
-mkdir -p $(OBJDIR)

clean:
-rm -rf $(OBJDIR)
-rm -f $(TARGETDIR)/ConfigChg

$(TARGETDIR)/ConfigChg: $(OBJDIR)/PubFunc.o $(OBJDIR)/ConfigChg.o
$(CC) -o $@ $(CFLAGS) $(ORALIBS) $(OBJDIR)/PubFunc.o $(OBJDIR)/ConfigChg.o

#pc compile
$(OBJDIR)/ConfigChg.o : $(SRCDIR)/ConfigChg.pc
proc parse=no iname=$(SRCDIR)/ConfigChg.pc oname=$(SRCDIR)/ConfigChg.c $(PCFLAGS)
$(CC) -c -o $@ $(CFLAGS) $(ORALIBS) $(SRCDIR)/ConfigChg.c

$(OBJDIR)/PubFunc.o : $(PUBDIR)/PubFunc.pc
proc parse=no iname=$(PUBDIR)/PubFunc.pc oname=$(PUBDIR)/PubFunc.c $(PCFLAGS)
$(CC) -c -o $@ $(CFLAGS) $(ORALIBS) $(PUBDIR)/PubFunc.c

Sybase Makefile:

SETUPDIR=
CC = gcc -g
TARGETDIR =
TESTDIR =
PUBDIR =
SRCDIR =
OBJDIR =
RELDIR = $(SYBASE)/$(SYBASE_OCS)
# Sybase include directory
INCDIR = $(RELDIR)/include
#
# Modify the following line to use debug/nondebug libraries
#
#LIBDIR = $(RELDIR)/devlib
LIBDIR = $(RELDIR)/lib

# Specify the include and library search paths for the compiler
INCLUDE = -I. -I$(INCDIR) -I$(PUBDIR)
LIBPATH = -L$(LIBDIR)

PRECOMP = $(RELDIR)/bin/cpre

SYBLIBSCT = -lsybct
SYBLIBS = -lsybtcl -lsybcs -lsybcomn -lsybintl -lsybunic
SYSLIBS = -B dynamic -lsocket -lnsl -ldl -lm

all: $(OBJDIR) $(TARGETDIR)/ConfigChg

$(OBJDIR):
-mkdir -p $(OBJDIR)

clean:
-rm -rf $(OBJDIR)
-rm -f $(TARGETDIR)/ConfigChg
-rm -f $(PUBDIR)/PubFunc.c

$(TARGETDIR)/ConfigChg: $(OBJDIR)/PubFunc.o $(OBJDIR)/ConfigChg.o
@ printf "$(CC) $(OBJDIR)/PubFunc.o $(OBJDIR)/ConfigChg.o $(INCDIR)/sybesql.c $(INCLUDE) $(LIBPATH) $(SYBLIBSCT) $(SYBLIBS) $(SYSLIBS) -o $@/n";
$(CC) $(OBJDIR)/PubFunc.o $(OBJDIR)/ConfigChg.o $(INCDIR)/sybesql.c $(INCLUDE) $(LIBPATH) $(SYBLIBSCT) $(SYBLIBS) $(SYSLIBS) -o $@

#pc compile
$(OBJDIR)/ConfigChg.o : $(SRCDIR)/ConfigChg.c
@ printf "$(CC) $(INCLUDE) -c -o $@ $(SRCDIR)/ConfigChg.c/n";
@ $(CC) $(INCLUDE) -c -o $@ $(SRCDIR)/ConfigChg.c

$(SRCDIR)/ConfigChg.c : $(SRCDIR)/ConfigChg.cp
@ printf "$(PRECOMP) -O $@ $(SRCDIR)/ConfigChg.cp/n";
@ $(PRECOMP) -O $@ $(SRCDIR)/ConfigChg.cp

$(OBJDIR)/PubFunc.o : $(PUBDIR)/PubFunc.c
@ printf "$(CC) $(INCLUDE) -c -o $@ $(PUBDIR)/PubFunc.c/n";
@ $(CC) $(INCLUDE) -c -o $@ $(PUBDIR)/PubFunc.c

$(PUBDIR)/PubFunc.c: $(PUBDIR)/PubFunc.cp
@ printf "$(PRECOMP) -O $@ $(PUBDIR)/PubFunc.cp/n";
@ $(PRECOMP) -O $@ $(PUBDIR)/PubFunc.cp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: