sqlca.sqlcode 1405 解决方法

已经是第二次遇到sqlca.sqlcode  = 1405的错误了,这里记录一下备忘。

Pro*c中的sqlcode 报1405错是因为取出的某个值是NULL,使用命令 #oerr ora 1405  这显示出错原因 ORA-01405: “ fetched column value is NULL”
常用的处理NULL值的方法有: 
1、采用指示器变量,我的做法是所有所有的字段都加上指示变量,防止之中无误预测的null值;这里需要注意的是如用到结构体的时候,给使用之前给结构体初始化,memset(&str,0,sizeof(str))。

2也可采用NVL()函数来替换NULL: 

NVL( string, replace)功能:如果string为NULL,则NVL函数返回replace的值,否则返回string的值。需要只一点的是string和replace必须为同一数据类型,除非显示的使用TO_CHAR函数。下面是问题得到解决的部分sql:

SELECT nvl(TEMP1,chr(0)) ,nvl(TEMP2,0),nvl(to_char(DATE,'yyyymmdd'),nvl(NUMBER,0.0),
FROM TEMP_TAB WHERE TEMP1= 'ABC' AND TEMP2= '2'

如果有哪位朋友有其他解决方法 ,很愿意学习,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值