永发信息网

DB2能够创建自定义函数,但是不能够调用

答案:4  悬赏:50  手机版
解决时间 2021-11-13 10:08
DB2能够创建自定义函数,但是不能够调用
最佳答案
DB2 Universal Database(DB2 UDB)用户定义函数(user-defined functions,UDF)允许您添加自己的函数定义,从而扩展 DB2 的内置函数。有了这些用户定义函数,就可以通过编写自己的用于事务、计算等方面的函数来定制 DB2,以满足业务需求。

UDF 鼓励代码重用,这样可以提高应用程序开发人员的生产率。如果您有很多实现相同逻辑的程序,那么可以通过 UDF 标准化该逻辑,并让所有这些程序使用相同的实现。一旦在 DB2 中定义好一个 UDF,便可以像使用内置 DB2 函数那样,在 SQL 语句中使用这个 UDF。如果是在应用程序中编写这个函数,而不是将其定义为 UDF,那么 SQL 查询工具 (例如 CLP)的用户将不能访问这个函数。UDF 允许任何前端,包括 Java™ 程序,访问这个标准逻辑。

直接从数据库引擎(而不是从应用程序代码)中调用 UDF 还可以使性能获得极大的提高,尤其是在将数据发送回应用程序进行进一步处理之前,可以使用 UDF 来过滤数据。

由于UDF是预先编译的,性能普遍优于一般的查询,UDF使用的存取计划一经编译就会相对稳定。我在开发中曾多次发现,使用UDF 代替查询或视图中的复杂部分会提高几倍甚至几十倍的性能,主要原因是迫使DB2使用指定的存取计划来充分利用index或者调整其访问过程(如Join 顺序、Filter位置等)。使用UDF 进行优化的基本思路是:将复杂查询分解为多个部分执行,针对每个部分优化处理,将各部分组合时能够避免存取计划的一些不必要变化,优化整体性能。

当然了,有一个小问题。自定义函数(UDB)只能包含那些不会改变数据库状态的语句(诸如INSERT、UPDATE或DELETE语句是不允许的)。并且只允许完整SQL PL语言的子集出现在SQL函数中(不能是CALL语句、游标和条件处理)。

自定义函数语法

CREATE FUNCTION 函数名(传入参数名 datatype, ……)
RETURNS datatype –返回值类型
BEGIN ATOMIC
函数体
END
例子
create function ADD(a int ,b int)
returns int
LANGUAGE SQL
BEGIN ATOMIC
DECLARE sum int default 0;
set sum = a + b;
return sum;
END
调用测试:VALUES (ADD(1, 2))
全部回答
4916119
查看一下帮助
看看你自定义函数是怎么写的?贴出来
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
锐志导航怎么升级
予万物长情为一人皈依什么意思
微单索尼和佳能哪个好
牛字旁加个生命的生念什么
谁对古代汉语和古文字(甲骨文?铭文?)有研
司尔特水溶肥料15一5一25价格表
仁王手柄怎么装备武器 手柄装备武器方法详解
今年长影成立70周年10月1日前游长影门票多少
鑫盛汽车中介地址有知道的么?有点事想过去!
红香酥梨的栽培管理
惠阳汽车站到深圳宝安机场的车辆时间是隔多久
带人防的筏板基础钢筋先布哪个方问
6.9x-1.4=2.5
求最近三年的GDP、财政收入、GMP、税收收入(
一个鸡蛋的重量大概是多少
推荐资讯
小川村地址有知道的么?有点事想过去!
炸空心麻团还要腥面吗
扬州苏馨缘席梦思是什么地方产的价格是多少
笑笑家到书店有560米,从家去书店看书走了280
C罗,梅西,大罗,小罗,马拉多纳,郜林从强
简便计算递等式计算,用纸写下答案的优先采纳
小屯镇魏庄小学地址在什么地方,想过去办事,
小说凤还巢的主要内容
|+(一7)|一|一(一6)|如何计算与化简
请教:联想Y450pse(w)灰cpu:p7450 显卡:GT24
车友车友,请问东风风度MX6和新款逍客2.0哪个
2017捷达科二出左库方向盘必须要回正吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?