【问题标题】:check if oracle function value given as a parameter exist in the table检查表中是否存在作为参数给出的 oracle 函数值
【发布时间】:2019-10-10 19:38:29
【问题描述】:

我的桌子是这样的

Teacher(ID, Name, Surname)

我想给用户一个输出。

如果作为参数提供给函数的 id 不存在于表中的 ID 列中。

如何在函数内部处理这个问题并给出输出: "请求的 id 不在表中"

Create or replace function subjects
(
 code_value  IN Teacher.ID % TYPE
)

RETURN NUMBER

IS
id_value NUMBER

BEGIN

SELECT id 
INTO id_value
FROM TEACHER
WHERE ID = code_value

END

END subjects;


【问题讨论】:

    标签: sql oracle oracle11g sql-function


    【解决方案1】:

    使用您编写的函数,您不能 - 它返回一个 NUMBER,而您想要的结果是一个字符串 (VARCHAR2)。

    有一种方法 - 编写一个异常处理程序,当您编写的 select 不返回任何内容时将执行该异常处理程序,因为它会引发 NO_DATA_FOUND,所以:

    begin
      select ...
    
    exception
      when no_data_found then
        raise_application_error(-20000, 'The id asked is not present in the table');
    end;
    

    这将导致你的程序停止(引发错误,对吗?)所以 - 如果你想继续,要么

    • 更改返回数据类型或
    • 切换到具有OUT 参数(或两个- 一个用于ID,另一个用于可能的错误消息)的过程。它的(过程)缺点是您不能在SELECT 语句中使用它,但您需要一段PL/SQL 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2020-01-11
      • 2021-09-14
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多