WEB开发网
开发学院数据库DB2 DB2存储过程开发最佳实践 阅读

DB2存储过程开发最佳实践

 2007-09-04 16:22:47 来源:WEB开发网   
核心提示: 表Person中num、name和age都是非空字段,对于name字段,DB2存储过程开发最佳实践(4),多个空格我们也认为是空值,所以在进行判断前我们调用RTRIM和COALESCE对其进行处理,最佳实践 3:正确设定游标的返回类型前面我们已经讨论了如何声明存储过程的返回结果集,这里我们

表Person中num、name和age都是非空字段。对于name字段,多个空格我们也认为是空值,所以在进行判断前我们调用RTRIM和COALESCE对其进行处理,然后使用 piName = '',对其进行非空判断;对于Rank字段,我们希望如果用户输入的NULL,我们把它设置成"0",对其我们也使用COALESCE进行初始化;对于"Age"和"Num" 我们直接使用 IS NULL进行非空判断就可以了。

如果输入参数没有通过非空判断,我们就对输出参数poGenStatus设置一个确定的值(例子中为 34100)告知调用者:输入参数错误。

下面是对参数初始化规则的一个总结,供大家参考:

1. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,'')把NULL转换成'';

2. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0;

3. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,'')把NULL转换成'',然后判断函数返回值是否为'';

4. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。

最佳实践 3:正确设定游标的返回类型

前面我们已经讨论了如何声明存储过程的返回结果集。这里我们讨论一下结果集返回类型的问题。结果集的返回类型有两种:调用者(CALLER) 和客户应用(CLIENT)。首先我们看一下声明这两种游标的例子:

CREATE PROCEDURE getPeople(IN piAge INTEGER)
DYNAMIC RESULT SETS 2
READS SQL DATA
LANGUAGE SQL
BEGIN
  DECLARE rs1 CURSOR WITH RETURN TO CLIENT FOR
    SELECT name, age FROM person
      WHERE age<piAge;
  DECLARE rs2 CURSOR WITH RETURN TO CALLER FOR
    SELECT NAME, age FROM person
      WHERE age>piAge;      
  OPEN rs1;
  OPEN rs2;
END  

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:DB 存储 过程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接