ORA-01405 的意思是“提取的列值为空”
今天在运行两个程序时,打印了这个“错误”日志。
有一段报错程序如下:
-
EXEC SQL SELECT to_char(max(Time),'yyyy-mm-dd hh24:mi:ss') INTO :MaxTime FROM my_table;
-
-
if (sqlca.sqlcode == -1405)
-
{
-
strncpy(MaxTime,"1970-1-1 0:0:0",TIME_LEN);
-
}
在这之前程序设置了任何数据库报错都打印错误日志。my_table表记录为空时,就会打一条错误日志,但实际上程序运行并没出错。虽然下面做了为空时的处理,但冗余的错误日志已经打了,这会给不熟悉程序的人带来困惑,以为程序运行出问题了。
改为以下代码,当记录为空时,就赋默认值,这样就不会有多余的报错信息了。
-
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
阅读(2564) | 评论(0) | 转发(0) |