使用navicate写oracle的存储过程,运行时有时会报错Error - OCI_NO_DATA,但有时又是正常的,找不到原因,于是将存储过程拆分成一部分一部分的运行,还是存在一样的问题。百度了一下,出现这个问题,是因为select into 语句没有查询到数据。可以用异常处理来解决这个问题。
有时正常,有时报错的代码,如下图:(图中,红色框中的代码便是引起报错的语句)
加上异常捕获后即可:
tm:='';
BEGIN
select barcode into tm from scan_tm
where czid=czid and CPPH=cpcode
group by barcode having COUNT(*)>1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('没有重复条码');
END;
备注: 只有当一条数据都没有查询出来时,才会捕获这个NO_DATA_FOUND的异常。
参考文档: https://www.2cto.com/database/201806/754951.html