内部快
pl/sql中要想从数据表中向变量赋值,需要使用select into 语句,这时候需要注意1个问题:
如果查询没有记录时,会抛出no_data_found异常。如果有多条记录时,会抛出too_many_rows异常。
如果出现no_data_found异常,这个是比较糟糕的。一旦抛出了异常,就会让过程中断。特别是no_data_found,这种异常,没有严重到要让程序中断的地步,可以完全交给由程序进行处理。
我们可以使用内部块来处理异常,begin exception end
也可以注明内部快的名字 ,如下:
<<plBlock>>
begin
EXCEPTION
when no_data_found then
WHEN OTHERS THEN
end plBlock;
第二种情况是too_many_rows 异常的问题。给一个变量赋值时,但是查询结果有多个记录。
如果多条数据是可以接受的,也就是说从结果集中随便取一个值就行。那么可以跟据需求取需要的(比如最新的),rownum=1 限制,不过这样可能是有问题的。
如果多条数据都需要,那么需要游标了。