首页 > 解决方案 > oracle如何在游标块中捕获sql查询中的错误

问题描述

如何在块异常中捕获 sql 查询中的错误?在下面的示例中(除以零 -从 dual 中选择 (5 / 0) 作为示例),不执行异常块。

FUNCTION getData(p_result out integer)   
  RETURN SYS_REFCURSOR
AS
  my_cursor SYS_REFCURSOR;
BEGIN
  OPEN my_cursor FOR select (5 / 0) as example  from dual;
  
  p_result := 1;
  RETURN my_cursor;
  
exception 
    WHEN OTHERS THEN 
    p_result := 0;
END getData;

标签: oracleexceptioncursor

解决方案


-------Just User this function------
------------------------------------
FUNCTION getData(p_result out integer)   
  RETURN SYS_REFCURSOR
AS
  my_cursor SYS_REFCURSOR;
BEGIN
  OPEN my_cursor FOR select (5 / NULLIF(0,0)) as example  from dual;
  
  p_result := 1;
  RETURN my_cursor;
  
exception 
    WHEN OTHERS THEN 
    p_result := 0;
END getData;

推荐阅读