单4.演示了HOST_NAME函数的执行。可以在“下载”小节中找到该脚本host_name_example.db2的源代码。
清单4.测试函数HOST_NAME( )
下面这个例子测试演示了用以获取本地连接主机名的函数的执行。
在该场景中DB2数据库驻留在一个本地AIX机器上。
地址127.0.0.1 在 /etc/hosts文件中被映射到计算机名demoaix
:/* connect to the local database */ connect to sample Database Connection Information Database server = DB2/6000 8.1.2 SQL authorization ID = DB2INST1 Local database alias = SAMPLE /* execute the host_name function */ values host_name()” 1 ———————————————— demoaix 1 record(s) selected. |
下一个例子测试演示了远程连接上的函数的执行。
在该场景中,DB2数据库与上面一样驻留在同一 AIX 机器上。
到AIX上数据库的连接是由一个Windows 2000客户机建立的;
该客户机的名字为mycomputer。
/* The database samplaix is an alias for the SAMPLE database on AIX */ connect to samplaix Database Connection Information Database server = DB2/6000 8.1.2 SQL authorization ID = DB2INST1 Local database alias = SAMPLAIX /* execute the host_name UDF against the remote database 钬? it returns the name of the computer of the client connection */ values host_name() 1 ———————————————— mycomputer |
通过触发器或用户定义函数调用存储过程的UDF
当迁移到DB2时,碰到的另一个普遍问题就是其他RDBMS可以通过触发器或函数调用存储过程。虽然DB2已经承诺在未来版本中包含该功能,但是我们将展示如何使用DB2的当前版本来实现该功能,即通过创建一个将对存储过程发出调用的UDF来实现。
清单5.中展示了用于该目的的用户定义函数CALL_PROCEDURE的签名。
清单5.用户定义函数CALL_PROCEDURE的签名
>>–CALL_PROCEDURE–(–procedure_name–,–parameter_list–,—–> >—–database_name–,–user_name–,–password–)————->< |
VARchar(257)类型的参数procedure_name指定要被调用的存储过程的全限定名—— 在传递多个参数时,要用逗号进行分隔。该字符串将被粘贴到用于调用过程的CALL语句中,因此其语法需要符合SQL CALL语句的要求。VARchar(8)类型的参数database_name指定要执行该存储过程的数据库的别名。存储过程不一定要驻留在同一数据库中。VARchar(128) 类型的参数user_name和VARchar(200)类型的参数password用于确定连接数据库以及执行该过程时所使用的注册信息。
该函数调用当前数据库中的存储过程。它建立新的连接之后就通过过程名和作为输入参数而提供的参数来执行CALL语句。该UDF返回0(零)表明CALL语句(以及相应的CONNECT和CONNECT RESET语句)执行成功。否则,将返回DB2命令行处理器(Command Line Processor,CLP)的返回码和一条提供了更多信息的出错消息。清单6演示了函数 create_PROCEDURE的执行。可以在“下载”小节中找到该脚本(trig_calls_proc.db2)的源代码。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
数据库产品巡礼:IBM DB2概览
IBM DB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。
-
IBM加入Spark社区 计划培养百万数据科学家
IBM近日宣布,将大力推进Apache Spark项目,并计划培养超过100万名Spark数据科学家和数据工程师。
-
IBM成立物联网部门旨在整合未用数据
IBM准备在未来四年投资30亿美元成立一个专门的物联网(IoT)部门,并由此建立一个基于云的开放平台来帮助客户进行更好的数据整合。
-
ODP项目能否成为Hadoop助推器?
开放数据平台联盟的成立旨在为了推动Hadoop的标准化,但项目能否最终成功,或能否项向着承诺的方向发展,还有很多不确定因素。