首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2在FETCH后的join / Open table上设置default when null

DB2在FETCH后的join / Open table上设置default when null
EN

Stack Overflow用户
提问于 2012-07-11 22:34:42
回答 1查看 2.9K关注 0票数 1

这是一个双重的问题,只是想着如何完成我的问题。另外,我对DB2和存储过程还很陌生,所以请耐心听我说。

我正在创建一个存储过程,它使用Left Join语句从两个表中获取一个值。这将导致第二个表中的一些值返回空值(因为它们在tableB中不存在)。

代码语言:javascript
复制
DECLARE CURSOR C1 WITH RETURN FOR 
select a.name, a.title, b.order from tableA a
left outer join tableB b on a.name = b.name;

现在,我需要一些方法将这些空值设置为默认值0。

我正在使用的程序可以做到这一点( CAST-IRON ),但是如果结果集太大,它会减慢编排速度并截断作业日志。所以我尝试使用存储过程来解决这个问题。

我的第一个想法是使用FETCH INTO语句和WHILE循环。

代码语言:javascript
复制
WHILE AT_END = 0 DO
FETCH C1 INTO CHNAME, CHTITLE, CHORDER; 
IF CHORDER IS NULL 
THEN SET CHORDER = 0;
END IF;
IF SQLCODE = 100 
THEN SET AT_END = 1;
END IF;
END WHILE;

但这似乎需要创建一个临时表,并在“FETCH INTO”之后使用insert命令声明该表的另一个游标。所以我想知道是否有其他方法可以做到这一点,或者在select语句中自动设置默认值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-11 22:42:50

使用COALESCE在select语句中设置默认值。

代码语言:javascript
复制
DECLARE CURSOR C1 WITH RETURN FOR  
select a.name, a.title, COALESCE(b.order,0) as order
from tableA a 
left outer join tableB b on a.name = b.name; 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11435011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档