Chinaunix首页 | 论坛 | 博客
  • 博客访问: 425423
  • 博文数量: 126
  • 博客积分: 35
  • 博客等级: 民兵
  • 技术积分: 1262
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 16:39
文章分类

全部博文(126)

文章存档

2017年(2)

2016年(20)

2015年(64)

2014年(24)

2013年(16)

我的朋友

分类: Oracle

2014-04-28 16:51:04

ORA-01405 的意思是“提取的列值为空”
今天在运行两个程序时,打印了这个“错误”日志。
有一段报错程序如下:
  1. EXEC SQL SELECT to_char(max(Time),'yyyy-mm-dd hh24:mi:ss'INTO :MaxTime FROM my_table;

  2. if (sqlca.sqlcode == -1405)
  3. {
  4.     strncpy(MaxTime,"1970-1-1 0:0:0",TIME_LEN);
  5. }
在这之前程序设置了任何数据库报错都打印错误日志。my_table表记录为空时,就会打一条错误日志,但实际上程序运行并没出错。虽然下面做了为空时的处理,但冗余的错误日志已经打了,这会给不熟悉程序的人带来困惑,以为程序运行出问题了。
改为以下代码,当记录为空时,就赋默认值,这样就不会有多余的报错信息了。
  1. EXEC SQL SELECT nvl(to_char(max(Time),'yyyy-mm-dd hh24:mi:ss'),'1970-01-01 0:0:0') INTO :MaxTime FROM my_table;

参考
深入理解ORA-01403与ORA-01405
http://blog.chinaunix.net/uid-20248722-id-2747791.html

解决ORA-01405: fetched column value is NULL 
http://blog.sina.com.cn/s/blog_9a4d43d80100zhg1.html
阅读(2481) | 评论(0) | 转发(0) |
0

上一篇:字节对齐

下一篇:ZooKeeper学习记录

给主人留下些什么吧!~~