#RETURN Statement

RETURN Statement为过程体结束控制语句,执行此语句时将会立即结束当前的过程体运行,并返回Statement内容到调用器。

# RETURN Statement in function

在自定义函数中使用RETURN Statement的语法形式为:

RETURN v_result;

其中,v_result可以为变量、常量或表达式。

此语句不可以省略,即过程体中的每个执行路径(流程控制语句的分支,异常处理单元的分支)里都必须包含至少一个RETURN Statement,且v_result不可以省略,但v_result的值可以为NULL。

示例

CREATE OR REPLACE FUNCTION ya_func RETURN INT IS
a VARCHAR(10) := '100';
BEGIN
    DBMS_OUTPUT.PUT_LINE('ya_func');
    RETURN TO_NUMBER(a)+10;
END;
/
 
SELECT TO_CHAR(ya_func) FROM dual;
 
--result
 
ya_func
TO_CHAR(YA_FUNC)
-------------------
110


-- EXCEPTION 异常处理
CREATE OR REPLACE FUNCTION ya_func (name_in IN VARCHAR) RETURN DATE IS
entry_out DATE;
BEGIN
    SELECT entry_date INTO entry_out FROM employees WHERE department NOT IN (SELECT deparment_no FROM department);
    RETURN(entry_out);
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            DBMS_OUTPUT.PUT_LINE ('NO_DATA_FOUND');
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE ('Unexpected error');
END;
/


--result
SELECT ya_func('jack') FROM dual;
NO_DATA_FOUND

[11:1]YAS-05228 function must has return sql

# RETURN Statement in others

在存储过程、匿名块、自定义高级包(body)、触发器中使用RETURN Statement的语法形式为:

RETURN ;

其中,return后不可跟变量、常量或表达式。

此语句可以省略,出现时用于表示后面的语句不再执行,结束程序。

示例

CREATE OR REPLACE PROCEDURE ya_proc IS
A VARCHAR(10) := '100';
BEGIN
    DBMS_OUTPUT.PUT_LINE('ya_proc 1');
    RETURN;
    DBMS_OUTPUT.PUT_LINE('ya_proc 2');
END;
/

--result
CALL ya_proc();
ya_proc 1
pdf-btn 下载文档
copy-btn 复制链接