'No Data Found'错误,我不明白为什么



我收到了一个问题,我的代码是扔给我这个错误,我不确定为什么,因为它没有任何意义,如果你们中的任何一个人可以帮助我,你会是一个救命恩人。

我没有真正尝试过任何东西,因为我甚至不知道从哪里开始至少并试图解决这个问题,我找不到任何不一致的代码或任何东西,我不知道为什么它指出没有数据在声明部分,而事实上有。

声明*第1行出现错误:ORA-01403:没有找到数据ORA-06512: at line 7

' SET SERVEROUTPUT ON

DECLARE
v_newgoal donor.yrgoal%TYPE;
v_idno donor.idno%TYPE;
v_name donor.name%TYPE;
v_yrgoal donor.yrgoal%TYPE;
BEGIN
SELECT idno, name, yrgoal
INTO v_idno, v_name, v_yrgoal
FROM donor
WHERE v_idno = 11111;
IF v_yrgoal > 500 THEN
v_newgoal := v_yrgoal * 2;
ELSIF v_yrgoal < 500 THEN
v_newgoal := v_yrgoal + 250;
ELSE
dbms_output.put_line('Error: Not Proceeding.');
END IF;
UPDATE donor
SET yrgoal = v_newgoal
WHERE idno = 11111;
dbms_output.put_line(v_idno||' '||v_name||' '||v_yrgoal);
END;
/
SET SERVEROUTPUT OFF

DECLARE
v_newgoal donor.yrgoal%TYPE;    -- is Null
v_idno donor.idno%TYPE;         -- is Null
v_name donor.name%TYPE;         -- is Null
v_yrgoal donor.yrgoal%TYPE;     -- is Null
BEGIN
SELECT idno, name, yrgoal           -- >> NO_DATA_FOUND exception raised here
INTO v_idno, v_name, v_yrgoal       -- Select ... INTO ... must return something
FROM donor                          -- (when there is no row returned) >>> NO_DATA_FOUND  >>> could be handled in the EXCEPTION section below
--WHERE v_idno = 11111;     -- this means "WHERE Null = 11111" - change the line to "WHERE idno = 11111"
WHERE IDNO = 11111;                     
IF v_yrgoal > 500 THEN
v_newgoal := v_yrgoal * 2;
ELSIF v_yrgoal < 500 THEN
v_newgoal := v_yrgoal + 250;
ELSE    -- if v_yrgoal is equal to 500 then v_newgoal will stay Null - don't think you want that
dbms_output.put_line('Error: Not Proceeding.');  -- just message with no stopping --> UPDATE will be executed
END IF;
UPDATE donor
SET yrgoal = v_newgoal  -- possible Null value
WHERE idno = 11111;

dbms_output.put_line(v_idno||' '||v_name||' '||v_yrgoal);
EXCEPTION                   -- EXCEPTION section - a place to handle different kinds of errors
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('some info about the ERR');
WHEN OTHERS THEN
... do something else ...
END;

最新更新