最近写PROCEDURES 的时候.有一种情况虽然自己知道,但是往往容易忽视掉.
就是在对一张表进行UPDATE处理的时候.要求做以下处理:
表中没有符合WHERE条件的数据时候.对该表进行INSERT操作.有就UPDATE,错误的时候打出ERROR信息.
在一般情况下.首先想到的是在EXCEPTION里面写WHEN NO_DATA_FOUND THEN.乍看上去没有问题,
但是实际上是没有数据的时候.是不会跑到EXCEPTION里面去的.所以我们想要的INSERT处理是不会做.
所以应该在UPDATE之后加一个IF判断...
IF SQL%ROWCOUNT = 0 THEN
如果SQL%ROWCOUNT = 0 就执行INSERT....
另外,NO_DATA_FOUND 是oracle 內的一種exception