SQL如何处理用户定义函数中的异常?

SQL如何处理用户定义函数中的异常?,sql,exception-handling,user-defined-functions,Sql,Exception Handling,User Defined Functions,此函数获取员工id并返回相应的员工姓名。如果用户输入的ID无效并显示错误消息,我想处理异常?在哪里添加异常块 CREATE OR REPLACE Function fun_Find_Staff_Name( v_staffid IN NUMBER ) RETURN VARCHAR2 IS staff_name VARCHAR2(60); CURSOR c_staff IS SELECT staff_firstName || ' ' || staff_lastName into staff

此函数获取员工id并返回相应的员工姓名。如果用户输入的ID无效并显示错误消息,我想处理异常?在哪里添加异常块

CREATE OR REPLACE Function fun_Find_Staff_Name( v_staffid IN NUMBER )
RETURN VARCHAR2
IS
staff_name VARCHAR2(60);
CURSOR c_staff IS
  SELECT staff_firstName || ' ' ||  staff_lastName
  into staff_name
  FROM staff
  WHERE staff_id = v_staffid;
BEGIN
OPEN c_staff;
FETCH c_staff INTO staff_name;  
CLOSE c_staff;
RETURN staff_name;
END;

我使用这个anonyomus块来检查函数是否正常工作。

我认为您不需要显式游标,嵌入式sql就可以做到这一点:

SET serveroutput ON;
DECLARE
v_staff_ID NUMBER := &StaffID;
v_message VARCHAR2(100);
BEGIN
v_message := fun_Find_Staff_Name(v_staff_ID);
dbms_output.put_line(v_message);
END;
请记住,在处理异常时,不要忘记提出它;如果没有,数据库将不会在出现错误时回滚事务

如果它在编译时喊出一些错误,我很抱歉,但是我没有编译它就编写了代码(我的暴徒很匆忙)


干杯,快乐的编码。

在我看来,您不需要显式游标,嵌入式sql就可以做到这一点:

SET serveroutput ON;
DECLARE
v_staff_ID NUMBER := &StaffID;
v_message VARCHAR2(100);
BEGIN
v_message := fun_Find_Staff_Name(v_staff_ID);
dbms_output.put_line(v_message);
END;
请记住,在处理异常时,不要忘记提出它;如果没有,数据库将不会在出现错误时回滚事务

如果它在编译时喊出一些错误,我很抱歉,但是我没有编译它就编写了代码(我的暴徒很匆忙)

干杯,快乐编码