firebird外置函数

  1. 外置函数:firebird内置函数不多,到2.5为止也不支持自定义函数,但firebird最强大也最迷人的是能很容易的支持外置函数标准函数.你可以找到很多现成的firebird的外置函数.也可以用vc delph gcc很容易的编写外置函数.
    • 安装文件自带的外置函数:在目录/Udf下,有fbudf.dll ib_udf2.dll以及相应的sql外置函数注册命令,只需简单运行相应sql文件就能注册这些外置函数.(如图)
      [转载]firebird <wbr>的存储过程(procedure)和外置函数(EXTERN
    • 编写自己的外置函数,我用delphixe2 编写一个简单返回字符串MD5值的函数.
      library BskyFBPub;
      uses
        System.SysUtils,
        System.Classes,
        Besky.md5,//这个文件将在下一篇专门来讲
        //需要引入firebird的ib_util.pas
        ib_util in 'X:DataBaseFirebird_2_5includeib_util.pas';
      {$R *.res}
      function Md5str(s: Pansichar): Pansichar; stdcall;
      var
        ans: ansistring;
        pach: Pansichar;
      begin
        ans := GetMD5StrOfString(s);
       //  GetMem(pach,32);
       { 用ib_util.pas的ib_util_malloc 代替 GetMem
       分配的内存一定要比返回的制所需的内存大1,最好按8字节对齐
       所以MD5至少需要分配33,按8字节对齐分配40
       }
        pach := ib_util_malloc(40);
        StrPCopy(pach, ans);
        Result := pach;
      end;
      exports
        Md5str;
      begin
      end.
      --------------
      这里要注意:凡是要进行内存分配,且分配的内存是给函数的返回值,而需要firebird自己施放这个内存时,必须使用firebirdbinib_util.dll自带的内存分配函数.她的delphi引入单元文件和c的头文件都在目录include下,在你的程序里引用即可.
      unit ib_util;

      interface

      function ib_util_malloc(l: integer): pointer; cdecl; external 'ib_util.dll';

      implementation

      end.
      这里用到的支持64位的 Besky.md5.pas将在下一篇专门讲述
    • 注册这个函数到数据库.
      DECLARE EXTERNAL FUNCTION MD5STR
          CSTRING(20480)
      RETURNS CSTRING(40) FREE_IT
      ENTRY_POINT 'Md5str' MODULE_NAME 'BskyFBPub';
    • 测试一下:
       select staffid,staffname,md5str(staffname) as md5name  from  ys_staff
    • 返回如图
      [转载]firebird <wbr>的存储过程(procedure)和外置函数(EXTERN
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值