电脑技术学习

DB2用户定义函数实现多种语言的排序

dn001
  db2 create database sample using codeset utf-8 territory ca  本文提供了针对 32 位 Intel 和 AMD 平台的二进制代码。下面介绍在 Linux 和 Windows 上如何安装预构建的二进制代码。对于所有其他平台,编译 ICU 和 UDF 中提供了说明。  针对 Linux(32 位 Intel 或 AMD)预构建的二进制代码  要在 Linux 上安装预构建的二进制代码:  从 “下载 中下载文件 sortkey-linux-x86.zip 并将它解压到一个临时目录中。将以下文件:sortkey
  libicui18n.so.34
  libicuuc.so.34
  libicudata.so.34
  复制到 sqllib/function 中。  连接到数据库,并运行 DDL 脚本来对这个函数进行编目:db2 connect to sample
  db2 -tvf createfn.db2
  注:这个 Linux 预构建二进制代码是在 Red Hat Linux 7.2 上用 gcc 2.96 编译的。  针对 Windows(32 位)预构建的二进制代码  要在 Windows 上安装预构建的二进制代码:  从 “下载 中下载文件 sortkey-windows-32.zip 并将它解压到一个临时目录中。  将以下文件:  sortkey.dll  icuin34.dll  icuuc34.dll  icudt34.dll  复制到 sqllib/function 中。  使用一个 DB2 命令窗口连接到数据库,并运行 DDL 脚本来对这个函数进行编目:  db2 connect to sample  db2 -tvf createfn.db2  编译 ICU 和 UDF  要编译 ICU 和 UDF:  下载并安装 ICU 库。参见 “参考资料 中 ICU 站点的链接,在这里可以下载二进制代码或源代码,以及学习如何编译和安装这个库。假如需要的话,将包含 ICU 可执行文件的目录添加到 PATH 环境变量中。在 Windows 中,还需要更新 LIB 和 INCLUDE 环境变量。LIB 变量应该引用 iculib 目录,INCLUDE 应该引用 icuinclude 目录。 上一页123456789下一页   从 “下载 中下载文件 sortkey-source.zip 并将它解压到一个临时目录中将文件 sqllib/samples/c/bldrtn(在 Windows 上是 sqllibsamplescldrtn.bat)复制到临时目录并编辑复制的文件。对于编译和链接步骤,需要添加关于 ICU 的信息。  在 Linux 或 UNIX 上,定义变量 ICU_C_FLAGS 和 ICU_L_FLAGS,并将它们添加到编译和链接命令中。这些变量应该在命令前面定义,并在编译器或链接器可执行文件名后面直接使用。清单 1 显示 Linux bldrtn 文件中的相关部分。修改之处以粗体显示。  清单 1. 修改的 Linux bldrtn 文件# If an embedded SQL program, precompile and bind it.
  if [ -f $1".sqc" ]
  then
  ./embprep $1 $2
  fi
  # ICU options
  ICU_C_FLAGS="`icu-config --cppflags --cxxflags`"
  ICU_L_FLAGS="`icu-config --ldflags`"
  # Compile the program.
  $CC $ICU_C_FLAGS $EXTRA_C_FLAGS-I$DB2PATH/include -c $1.c -D_REENTRANT
  # Link the program and create a shared library
  $CC $ICU_L_FLAGS $LINK_FLAGS -o $1 $1.o $EXTRA_LFLAG -L$DB2PATH/$LIB -ldb2
  -lpthread
  在 Windows 上,必须将 ICU 库添加到链接命令中。清单 2 显示 Windows bldrtn.bat 文件中的相关部分。修改之处以粗体显示。  清单 2. 修改的 Windows bldrtn.bat 文件:link_step
  rem Link the program.
  link -debug -out:%1.dll -dll %1.obj db2api.lib icudt.lib icuuc.lib
  icuin.lib -def:%1.def