DB2 V9.5版本中数据库应用程序移植的改进
2008-09-03 16:28:24 来源:WEB开发网………
String sql = "CALL bonus_calculate(?, ?)";
CallableStatement callStmt = con.prepareCall(sql);
// create an SQL Array
projects[0] = "AD3111";
projects[1] = "IF1000";
projects[2] = "MA2111";
java.sql.Array projectArray=con.createArrayOf("VARchar",projects);
// set IN parameters
callStmt.setArray(1, projectArray);
callStmt.setInt(2,percentage);
// call the procedure
callStmt.execute();
…………
create PROCEDURE bonus_calculate (IN projs projects, IN percentage integer)
BEGIN
DECLARE emp_array employees;
DECLARE bonus_array bonus;
select cast(array_agg(employee.empno) AS employees),
cast(array_agg(.10*salary) AS bonus) INTO emp_array,bonus_array
FROM vempprojact, unnest(projs) AS P(id), employee
where P.id=vempprojact.projno AND employee.empno=vempprojact.empno;
insert INTO bonus_temp
select T.empno, T.bonus
FROM unnest(emp_array, bonus_array)
WITH ORDINALITY AS T(empno,bonus, idx);
END@
全局变量
在以前的DB2版本,碰到含全局变量处理的移植程序移植,我们只能通过全局临时表来处理,使用起来非常麻烦。
全局变量改进了 SQL 语句之间的数据共享。版本 9.5 引入了全局变量的概念,它们是命名的内存变量,可以通过 SQL 语句访问和修改这些变量。全局变量使您能够在运行于同一会话(或连接)的不同 SQL 语句之间共享数据,而不需要应用程序逻辑来支持此数据传输。
更多精彩
赞助商链接