oracle - 空游标和异常
问题描述
我试图获取异常只是为了看看它是如何工作的。我声明了一个游标,它没有从表中获取任何数据,因为根据我的 where 子句,没有超过 60000 的薪水。游标应该是空的吗?我尝试了两种方法来获取错误消息,但我收到了类似“匿名块已完成”的消息。
set serverout ON
declare
c_empid kt_test.empid%type;
cursor c_kt is select empid into c_empid from kt_test where salary > 60000;
BEGIN
open c_kt;
fetch c_kt into c_empid;
exception
WHEN NO_DATA_FOUND THEN
raise_application_error(-20001,'Data not found for employee');
close c_kt;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20002,'Other error-'||SQLCODE||'-'||SQLERRM);
end;
和
set serverout ON
declare
c_empid kt_test.empid%type;
cursor c_kt is select empid into c_empid from kt_test where salary > 60000;
BEGIN
open c_kt;
fetch c_kt into c_empid;
IF c_kt%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Explicit Cursor: No data found');
END IF;
END;
line 1: SQLPLUS Command Skipped: set serverout ON
anonymous block completed
这里缺少什么以便我收到错误消息?
解决方案
一个简单的工作示例:
SQL> set serveroutput on
SQL> declare
2 cursor c is select 1 from dual where 1 = 0;
3 vN number;
4 begin
5 open c;
6 fetch c into vN;
7
8 if c%NOTFOUND then
9 dbms_output.put_line('No data');
10 end if;
11 end;
12 /
No data
PL/SQL procedure successfully completed.
SQL>
推荐阅读
- javascript - 如何从js中的按钮单独提取评分和?
- catalog - 无法访问 Roonle 中的目录
- python - 与 Mathematica 中的 FFT 相比,Python 中复杂信号的 FFT 导致“翻转”频谱
- android - 使用本地 JSON 数据搜索 ListView
- python-3.x - 如何仅在 Seaborn 线图中绘制置信区间
- javascript - FullCalendar:更新选项后防止自动滚动
- reactjs - 防止使用昂贵的计时器重新渲染
- reactjs - Reactjs 中的 Twitter 3 legged 授权(如果需要后端,那么 Expressjs)。找不到好的资源
- python - Visual Studio 代码和多线程调试问题
- python - 对列表的元素进行分组