使用IBM DB2例程简化迁移的步骤
2008-09-03 16:27:48 来源:WEB开发网下一个例子演示了在UDF中调用包含了两个参数的存储过程。在该例中,我们创建表( c ),带有两个输入参数的存储过程( abc )以及带有两个参数(parm1,parm2)的 UDF( udf_withcall )。当执行该UDF时,它将调用存储过程,然后,该存储过程会将由UDF传递给它的值插入表c。对表c进行select将验证表c的内容以及存储过程是否执行成功。可以在“下载”小节中找到该脚本( udf_calls_proc.db2)的源代码。
createtablec(aintcheck(a<>8),a1int)
DB20000ITheSQLcommandcompletedsuccessfully.
createprocedureabc(inpint,inp2int)begininsertintocvalues(p,p2);end
DB20000ITheSQLcommandcompletedsuccessfully.
createfunctionudf_withcall(parm1int,parm2int)
returnsint
LanguageSQL
notdeterministic
externalaction
returncall_procedure(’DB2INST1.ABC’,char(parm1)||’,’||char(parm2),’SAMPLE’,’DB2INST1’,’db2inst1’))
DB20000ITheSQLcommandcompletedsuccessfully.
selectudf_withcall(30,40)fromsysibm.sysdummy1
1
-----------
0
1record(s)selected.
/*verifythattheUDFhascalledtheprocedureandupdatedthetable*/
select*fromc
AA1
----------------------
1020
3040
2record(s)selected.
构建例程
为了构建C例程(UDF 或 存储过程),必须首先对其进行预编译、编译以及链接。该过程可通过批文件bldrtn (UNIX/LINUX 上)或 bldrtn.bat (Windows 上)自动完成,该文件包含在随DB2一同安装的样本中。可以在UNIX/LINUX上的/sqllib/samples/c目录或Windows上的
bldrtn[dbnameuseridpassword]
如果未提供dbname,那么批文件会将之默认为SAMPLE ,而userid和password则被默认为当前会话的用户ID和口令。
更多精彩
赞助商链接