使用IBM DB2例程简化迁移的步骤
2008-09-03 16:27:48 来源:WEB开发网该函数调用当前数据库中的存储过程。它建立新的连接之后就通过过程名和作为输入参数而提供的参数来执行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来检验该表内容 —— 进而检验该过程是否成功执行。
createtablet1(col1int)
DB20000ITheSQLcommandcompletedsuccessfully.
createtablet2(col1int)
DB20000ITheSQLcommandcompletedsuccessfully.
createprocedureabc(inpint)begininsertintot1values(p);end
DB20000ITheSQLcommandcompletedsuccessfully.
createtriggerinsafterinsertont2referencingNEWasnewforEACHROWMODE
DB2SQLBEGINATOMICvalues(call_procedure(’DB2INST1.ABC’,char(new.col1*2),
’SAMPLE’,’DB2INST1’,’db2inst1’));END
DB20000ITheSQLcommandcompletedsuccessfully.
insertintot2values20
DB20000ITheSQLcommandcompletedsuccessfully.
/*validatethatthetriggerhasfired-itshouldupdatet1*/
select*fromt1
COL1
-----------
40
1record(s)selected.
更多精彩
赞助商链接