ORACLE中实现CRC32的计算函数,SOLARIS平台

声明:这是我07年的一个偶然所得,借助了很多朋友和同事的帮助。希望能对在这个领域里面找寻的同行一些帮助。

 

首先用C在SOLARIS上编写一个CRC32.C文件

使用了SOLARIS上的GCC编译器,编译了CRC32.C文件,该文件最好放在oracle10g主目录下
使用gcc编译器,编译成64位的crc32.so文件。
编译命令是
gcc -m64 -fpic -o crc32.o -c crc32.c
gcc -shared -m64 -o crc32.so crc32.o  -L/usr/sfw/lib/64
在数据库中创建lib,命令是:
SQL> create or replace library CRC32 as '/opt/oracle10g/crc32.so'
  2  /
再创建function,命令如下:
CREATE OR REPLACE function crc_32(a in varchar2)
 return binary_integer
as
language C
library CRC32
name "call_crc"
parameters(a string,return int);
/
测试结果:
SQL> select crc_32('hello') from dual;

CRC_32('HELLO')
---------------
      907060870
同使用PERL语言写的CRC32算法程序计算

crc.pl hello
907060870
结果一致

同理对其他字符串进行了测试,结果一样。
测试成功,证明在ORACLE中可以使用CRC32计算出INTID。
参考网站地址如下:
http://blog.oracle.com.cn/html/38/t-115838.html
碰到的主要问题是,在SOLARIS上编译64位C的程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值