我是PL/SQL的初學者。我需要編寫一個具有以下細節的函數:帶異常處理的PL/SQL函數
創建一個名爲'find_transaction_type'的函數,該函數將接受transaction_type_id作爲輸入。根據這個輸入,函數必須返回varchar類型的事務類型名稱。
功能名稱:find_transaction_type,
輸入參數:transaction_type_id在INT
設計規則:
1)如果交易類型ID(即transaction_type_id)作爲輸入傳遞,id爲在比賽中事務表,然後它返回給定的transaction_type_id的類型。
2)如果交易類型ID作爲輸入傳遞,不會在交易表中的ID匹配,那麼它會拋出「NO_DATA_FOUND」異常,並以文本爲「沒有這樣的類型」
注意其顯示:使用變量來打印異常,而不是'dbms_output.put_line' ie:umpire_name:='沒有這樣的裁判';
我的解決辦法是:
create or replace function find_transaction_type(transaction_type_id in integer) return varchar is
transaction_type_name varchar(255);
type_id integer;
error_msg varchar(255);
begin
error_msg := 'No such Type';
select id
into type_id
from transaction_type;
if type_id = transaction_type_id
then
select type
into transaction_type_name
from transaction_type
where id = transaction_type_id;
return(transaction_type_name);
else
raise no_data_found;
end if;
exception
when no_data_found then
raise_application_error(-10403, error_msg);
end;
/
這有什麼錯我的代碼?
除了缺乏任何縮進以使其可讀? :-)那麼,你的第一個'select'沒有where子句,所以將返回'transaction_type'中的所有行,而不僅僅是你想要的。 –