2012-11-11 41 views
3

我正在尝试编写一个函数,该函数在表中已经找到帐户描述时返回1,如果没有,则返回0。Oracle PL-SQL函数不返回true

我可以让它返回0很好,但我不能似乎得到它返回1

Create or replace function test_glaccounts_description 
    ( 
    var_account_desc varchar2 
    ) 
    return number 
    as var_status number 
    begin 
    select 1 into var_status 
    from general_ledger_accounts 
    where account_description = var_account_desc; 
    exception 
    when no_data_found then 
    var_status := 0; 
    return var_status; 
    end; 
    /

这是它应该做的

代码的函数命名test_glaccounts_description接受一个参数 ,测试账户描述是否已经在 General_Ledger_Accounts表中。如果账户描述在表中,该函数应该返回值1,否则返回0。 (注:如果一个SELECT语句 不返回任何数据,它抛出一个NO_DATA_FOUND异常 你的函数可以处理。)

回答

4

您需要从所有路径在你的代码返回。

像这样的东西应该工作:

begin 
    select 1 into var_status 
    from general_ledger_accounts 
    where account_description = var_account_desc; 
    return var_status; 
exception 
    when no_data_found then 
    var_status := 0; 
    return var_status; 
end; 
/
+0

啊,我不知道一个异常被认为是一个单独的部分感谢。 – mmarkgraf