SQL中,使用NVL函数,报错:ora-01722:无效数字

updateabmi_item_storage_alltsett.amount=nvl((selectto_number(nvL(a.function_text,0))f... update abmi_item_storage_all t set t.amount = nvl((select to_number(nvL(a.function_text,0)) from abmi_item_all a where a.function_text is not null and a.item_id = t.item_id and a.item_code = t.item_code and a.item_type = 7 and a.org_id = t.org_id),0) where (select item_type from abmi_item_all where item_id = t.item_id) = 7 and t.item_code not like 'M-%' and t.org_id = 602 and t.period_code = 'GHCD-JAN-11';在执行这条SQL语句时,弹出ORA-01722:数字无效错误,因条件org_id和period_code的影响,有时报错,有时通过,完美一点的SQL,使用NVL 语句。谢谢!!! 展开
 我来答
tingshuo3200
2012-12-10 · 超过12用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:32.7万
展开全部
nvl 是用来 当数据库字段为空时,强制指定栏位的值。 如nvl(abc,0) 表示abc为空的时候,返回值为0 ,可以先用select 的方式把影响的行查出来,看是否where 语句错误,如果没有错,再检查update 部分的语句是否不正确,很简单就能排查问题的 。
LeenHLL
2013-09-11 · TA获得超过4085个赞
知道小有建树答主
回答量:599
采纳率:25%
帮助的人:363万
展开全部
因为NVL函数, 遇到数字型会报这个错.
ORA-01722: invalid number 即: 无法验证数字
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-05
展开全部
这个错误, 可能是你的表的数据问题.

也就是 abmi_item_all 表的 function_text 列当中, 存在有 非空, 又非数据的数据.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式