我寫了一個簡單的函數,它在SQL Developer中編譯時沒有錯誤。我嘗試調用該函數,並得到一個我不明白如何解決的錯誤。PL/SQL函數錯誤信息
CREATE OR REPLACE FUNCTION POUNDS_SF
(p_idbasket in number)
RETURN NUMBER
AS
lv_lbs bb_basketitem.option1%type;
lv_qty bb_basketitem.quantity%type;
lv_idbasket bb_basket.idbasket%type;
lv_total_lbs_num number;
BEGIN
select bi.option1, bi.quantity, b.idbasket
into lv_lbs, lv_qty, lv_idbasket
from bb_basketitem bi, bb_basket b
where p_idbasket = lv_idbasket;
lv_total_lbs_num := lv_lbs * lv_qty;
RETURN
lv_total_lbs_num;
END POUNDS_SF;
我調用函數與此匿名塊:
declare
lv_basket_id_num number(1) :=3;
lv_total_num number(5,2);
begin
lv_total_num := pounds_sf(lv_basket_id_num);
dbms_output.put_line(lv_total_num);
end;
我得到的錯誤是:
Error report:
ORA-01403: no data found
ORA-06512: at "STUDENT22.POUNDS_SF", line 10
ORA-06512: at line 5
01403. 00000 - "no data found"
*Cause:
*Action:
我道歉,如果這個問題是太基本或在錯誤的地方,等等。顯然,我是一名學生,想要學習PL/SQL。任何援助非常感謝。如果SELECT
語句返回超過1行以外的任何其他
EH
您需要添加一個異常處理程序來找出問題。您正遇到在編譯時不能發現的RUNTIME錯誤。所以你的函數在編譯時不會引發任何錯誤。 – abhi
您需要研究描述PL/SQL中異常處理的Oracle文檔:http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/errors.htm#LNPLS007 –