- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 |
/* 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)的源代码。
清单6. 测试函数 CREATE_PROCEDURE( )
下面这个例子测试演示了从触发器调用包含一个参数的存储过程。
在该示例中,我们创建 t1 和 t2 这两个表,带有一个输入参数(p)
的过程(abc)以及一个触发器(ins)。在执行触发器时,它将调用该过程。
然后,过程将会将 num 列的新值(NEW.coll)插入到表 t1 中。
这可以通过以下操作来测试:在表 t2 上执行插入后对 t1 发出 select
来检验该表内容 —— 进而检验该过程是否成功执行。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |