[UDF系列]如何编写InterBase UDF 之一

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

如何编写InterBase UDF

(作者:Gregory Deatz - Hoagland, Longo, Moran, Dunst & Doukas)

warton

 

译者叙:

由于InterBase性能方面表现突出,并且它是开源和跨平台的,有很多使用Delphi,C++Builder的程序员开始采用它做为其后数据库平台。但是InterBase的中文资料简直太少了。昨日,一网友在CSDN上提到InterBaseUDF(user defined functions 用户自定义函数),我顺手一查,网上竟然查不到这方面的中文资料。于是,我今天将一篇如何编写和使用InterBase UDF的文章翻译给大家,希望使用Interbase,C++Builder,Delphi的朋友能喜欢!

-----warton 2003.01.21

   

什么是UDF

 

    UDF—-( user defined functions)用户定义函数,是InterBase中采用任何一种语言编写(一般用C/C++,也可以用其它语言如pascal)并编译成共享库的函数。在windows平台下,共享库一般指动态链接库(DLL)

 

为什么编写UDF?

 

       毕竟存储过程自身可以实现相当多的功能。那为什么还要用UDF呢?

       然而,事实是InterBase并没有提供相当丰富的内置函数。一些普通的函数、字符串操作、日期操作等相关的函数据都没有提供。

    于是这样的事发生了,像Delphi,C这样的编程语言可以提供执行速度特别快的模块算法、日期变量处理、浮点数格式化、及字符中操作程序。

       编写UDF是个狂简单的任务,这可以说是从所周知了。然而,没经验的编写者可能对编写DLL/共享库感觉太难和不安

 

使用Delphi编写Windows平台的UDF

      

首先启动一个Delphi工程

    1.启动车个delphi dll工程(一个特殊类型的工程,当你选择“File”,“New)

为你的函数生成一个新的单元

    2.选择”File”,”New”…UNIT

       3.聪明的你最好现在保存所有文件把你的工程保存到一个你认为合适的地方。

生成一个模块程序

    4.在新生成的单元文件:

       5. 在接口段定义你的函数:

function Modulo(var i, j: Integer): Integer; cdecl; export;

6.实现这个函数:

function Modulo(var i, j: Integer): Integer;

begin

  if (j = 0) then

    result := -1 // just check the boundary condition, and

                 // return a reasonably uninteresting answer.

  else

    result := i mod j;

end;

 7.在新生成的工程源代码中,直接将下面的代码写到”begin end.”之上:

   exports

Modulo;

8.现在编译工程,你将得到一个可工作的动态链接库。

9.现在,我必须做的是将这个DLL复制到InterBase可以找到的UDF目录下,它可能是:

c:/Program Files/Borland/InterBase/UDF

10.如何使用UDF….按如下的操作。使用ISQL连接到一个己存在的新的数据库

11.写上如下的代码:

        declare external function f_Modulo
        integer, integer
        returns
        integer by value
        entry_point 'Modulo' module_name 'dll name minus ".dll"';

12提交你的改变。

13.现在测试它

select f_Modulo(3, 2) from rdb$database

 

   这简直太简单了,不是吗?

但是关于字符串和日期型怎么处理呢?

   

       (由于时间问题,今天就翻译到这,我还要编程序,不好意思J:),明天见!!)

Delphi数据库访问组件IBDAC实战:Firebird/InterBase原生连接与性能优化 数据库访问组件是Delphi开发中的关键环节,传统中间层如BDE、ADO、dbExpress在性能、兼容性和部署方面存在诸多痛点。原生连接技术通过直接调用数据库客户端API,绕过冗余中间层,能显著提升数据交互效率与稳定性。IBDAC作为专为InterBase和Firebird设计的组件库,全面支持Delphi 6至13,具备轻量部署、低学习成本和持续更新等优势,广泛应用于存量系统改造、ERP进销存、移动端数据同步等场景。本文围绕IBDAC v9.0.0的安装部署、核心组件使用、事务控制、字符集处理、大数据量 阅读详情

相关推荐

Fluent的UDF官方案例(含代码)

8个官方给定的案例(含代码):多孔介质、壁温、粘度、UDS、流化床、非均匀流动、沉降、动网格。121页内容,提供代码供参考,简单易学

Hive自定义UDF函数及使用

UDF全称:User-Defined Functions,即用户自定义函数,在Hive SQL编译成MapReduce任务时,执行java方法,类似于像MapReduce执行过程中加入一个插件,方便扩展。

小健的博客 5533

UDF 编写教程

fluent里面需要自己编写程序的会用到UDF,这里面对如何使用UDF增加方程的源项十分有帮助

如何编写udf函数(收藏篇)

去Maven仓库(https://mvnrepository.com/)下载需要的jar包以及复制所需要的依赖信息。hive自带了一些函数,比如:max、min 等,但是自带的函数数量有限,所以hive提供给用户自定义函数的功能。由于我们udf函数需要打的是jar包,一路next保存之后,需要修改下pom.xml文件,后面才能打jar包。maven不需要安装,idea自带,我们只需要下载依赖(引入需要的jar包,配置文件加上依赖信息)我的电脑>属性>高级系统设置>环境变量>系统变量。

weixin_38003620的博客 2847

[UDF系列]如何编写InterBase UDF

译者叙: 由于InterBase性能方面表现突出,并且它是开源和跨平台的,有很多使用Delphi,C++Builder的程序员开始采用它做为其后数据库平台。但是InterBase的中文资料简直太少了。昨日,一网友在CSDN上提到InterBaseUDF(user defined functions 用户自定义函数),我顺手一查,网上竟然查不到这方面的中文资料。于是,我今天将一篇如何编写和使用I

SeekMyself的专栏 2254

[UDF系列]如何编写InterBase UDF 之三

(接上一篇)如何编写InterBase UDFwarton译(前面讲了在windows下编写UDF)编写Linux/Unix平台的UDF(译者注:原用大量篇幅讲述了linux下的SO(shared object)文件和windows下的DLL文件,其实它们都是一种动态链接库,在此不做详细翻译!) 怎么在Linux 下生成一个shared library(共享库)?1

知而后定 1556

[UDF系列]如何编写InterBase UDF 之二

(接上一篇)如何编写InterBase UDFwarton译怎么编写字符串和日期型处理函数UDF呢? 下面编写一个“Left“函数    内存分配问题:              如果你使用IB(InterBase)5.1以下版本的话,在你的单元文件中键入下面的声明:function malloc(Bytes: Integer): Pointer; cdecl;

知而后定 1408

[UDF系列]如何创建InterBase UDF

[UDF系列之五]:如何创建InterBase UDFby Paul McGee (c) Borland Internation Inc.Warton译[概述]:用户定义函数(UDF)是一种采用编译语言编写函数,是用户为执行自定义的功能和常用的任务面设计的。UDF 允许程序员模块化一个数据库应用程序,并能嵌入到数据库以增强数据库自身的功能。UDF 也总是在数据库服务器

知而后定 1700

Write Udf For Interbase/Firebird

DECLARE EXTERNAL FUNCTION IBPASSWDCSTRING(8) CHARACTER SET WIN1252RETURNS CSTRING(16) CHARACTER SET WIN1252 FREE_ITENTRY_POINT IBPasswd MODULE_NAME pibudf.dll;DECLARE EXTERNAL FUNCTI

viocal的专栏 693

Interbase/Firebird Date&Time Function For UDF

type  TIBDate = Integer;  TIBTime = Longword;  TIBTimeStamp = packed record    Date: TIBDate;    Time: TIBTime;  end;procedure IBDecodeDate(IBDate: TIBDate; var Year, Month, Day: SmallInt);var  Centur

viocal的专栏 1278

SocketConnection的使用+interbase精要

笔记:1、InterBase Manager     管理InterBase的服务停止和运行    包括InterBase启动方式,根路径,服务器属性和监控属性2、IBConsole数据库管理工具    集成化、图形用户界面的数据库管理工具3、数据复制IBReplicator (可选部件)4、InterBase 常用数据库设计管理工具    IBConsole 自带    EMS QuickD

专栏 2555

2021 年使用 InterBase 关系数据库进行数据存储和管理的五个理由

在关系数据库领域,InterBase®是一种数据存储和管理解决方案,可提供很多功能。 从顶级安全功能和超级简单的管理到极低的总拥有成本,InterBase 可以保护您的数据、钱包和业务的可持续性。 前瞻性创新:InterBase 的根源 InterBase 最初创建于 1980 年代初,在 Borland旗 下被行业主流采用和进一步开发。在此过程中,它设定了衡量其他数据库性能的标准。 从一开始就被设计成轻量级和可扩展的,这是 InterBase 能够将其强大的引擎扩展到在各种硬件上运行的...

Delphi开发局QQ群:32422310 1330

Firebird/InterBase内置函数使用说明

加*号为FB2.0加入的函数1. COUNT, AVG, MAX, MIN, SUM说明:通用统计函数,不详细介绍了2. EXTRACT(timestamp_part FROM value)说明:EXTRACT(YEAR/MONTHE/DAY/WEEKDAY FROM 字段名)从日期型字段中分离出年,月,日及一个星期的第几天3. CAST(value AS datatype)说明:转换数...

319

C/C++ 连接使用嵌入式数据库 InterBase / Firebird

嵌入式数据库与非嵌入式数据库的差别,在于运行模式的差别。并不是运行在嵌入式手持设备上的数据库就是嵌入式数据库,那种数据库我们通常称做嵌入式移动数据库。理论上讲,嵌入式设备一样可以运行网络数据库的服务端程序。 从这个意义上讲,似乎所有单机数据库都可以算嵌入式数据库,比如Access,Paradox,DBF等等,因为它们都不用启动数据库服务器即可使用。然而,我们通常不将上...

tan_kaishuai的专栏 1609

Delphi 开发数据库程序经验三则

1.建立临时表  数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。这种方法的好处是:提高输入效率,减小网络负担。  由于用户一次输入的数据量一般情况下较小(不会超过几百条记录),所以临时表可以建立在内存中,这样处理速度较快。  方法1

1220
上一篇: [C++Builder/Delphi初学者指南] 用C++Builder、Delphi转换数据表
下一篇: [UDF系列]如何创建InterBase UDF
warton
博客等级 码龄25年 61粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值