我是一名實習開發人員,他負責管理其他人的代碼,因此我的大部分工作都將修改其工作。我在Oracle 10g上使用報表生成器。爲什麼我的異常會阻止代碼運行
我有一個公式中的以下設置:
function get_addressFormula return Char is
begin
if :payee_ctc_id is not null then
begin
select a.address
,a.address2
,a.address3
,g.location
,g.ppostcode
into :address1
,:address2
,:address3
,:address4
,:postcode
from ctc_address a
,geo_locations g
where a.addresstypeid = 1
and a.costcentreid = :payee_ctc_id
and g.locationid = a.locationid
and a.addressid = (select max(i.addressid)
from ctc_address i
where i.costcentreid = :payee_ctc_id
and i.addresstypeid = 1);
exception
when others then
return null;
while trim(:address1) is null and (trim(:address2) is not null or trim(:address2) is not null or trim(:address4) is not null)
loop
:address1 := :address2;
:address2 := :address3;
:address3 := :address4;
:address4 := '';
end loop;
while trim(:address2) is null and (trim(:address3) is not null or trim(:address4) is not null)
loop
:address2 := :address3;
:address3 := :address4;
:address4 := '';
end loop;
while trim(:address3) is null and trim(:address4) is not null
loop
:address3 := :address4;
:address4 := '';
end loop;
end;
else
begin
<else code>
end;
end if;
return 'y';
end;
這是除了最後else塊完整的功能。我嘗試了no_data_found,但仍然無法正常工作。
@tbone。我不知道該怎麼做。到目前爲止,我用一些Google搜索了一些Google搜索。
您可能希望實際引發異常而不是陷入它並返回null(這就是爲什麼您不知道發生了什麼)。 – tbone
你能告訴我們更多的代碼並指出未執行的代碼嗎?如果EXCEPTION之後的代碼從未執行過,則意味着總是拋出異常,並以「RETURN NULL」結尾。 –
由於您的示例中刪除了一些重要的語法,因此很難對此進行評論。 –