Oracle PL-SQL 函数未返回 true

Posted

技术标签:

【中文标题】Oracle PL-SQL 函数未返回 true【英文标题】:Oracle PL-SQL function not returning on true 【发布时间】:2012-10-31 09:32:53 【问题描述】:

我正在尝试编写一个函数,如果它在表中找到帐户描述,则返回 1,否则返回 0。

我可以让它返回 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,如果 帐户描述在表中,如果不是,则为零。 (注意:如果选择 语句不返回任何数据,它会抛出 NO_DATA_FOUND 异常 你的函数可以处理。)

【问题讨论】:

【参考方案1】:

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

这样的事情应该可以工作:

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;
/

【讨论】:

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

以上是关于Oracle PL-SQL 函数未返回 true的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PL-SQL 在 Oracle 中获取列数据类型

通过添加嵌入在 PL-SQL(Oracle 函数)中的 select 子句来处理异常

oracle 自定义函数

Oracle PL-SQL 函数出现错误 PLS-00103:在预期以下情况之一时遇到符号“SELECT”

Oracle函数

PL-SQL 递归函数