首页 > 解决方案 > 包规范中 RETURN 语句的用途是什么

问题描述

下面的代码编译成功。我想知道的是包规范中 RETURN 语句的用途是什么。这是一个永远不会运行的死语句吗?

CREATE OR REPLACE PACKAGE test_pkg
IS
RETURN NUMBER;
END test_pkg;
/
CREATE OR REPLACE PACKAGE BODY test_pkg
IS
    PROCEDURE test_proc
    IS
    BEGIN
    NULL;
    END test_proc;
END test_pkg;

标签: sqloracleplsqlpackage

解决方案


酷,不是吗?RETURN- 在这种情况下 - 不是语句,而是数据类型为的变量NUMBER

看一个例子:

SQL> SET SERVEROUTPUT ON
SQL>
SQL> CREATE OR REPLACE PACKAGE test_pkg
  2  IS
  3     RETURN  NUMBER;                   --> declared here
  4
  5     PROCEDURE test_proc;
  6  END test_pkg;
  7  /

Package created.

SQL> CREATE OR REPLACE PACKAGE BODY test_pkg
  2  IS
  3     PROCEDURE test_proc
  4     IS
  5     BEGIN
  6        test_pkg.return := 123;       --> used here
  7        DBMS_OUTPUT.put_line ('Return variable''s value = ' || test_pkg.return);
  8     END test_proc;
  9  END test_pkg;
 10  /

Package body created.

SQL> EXEC test_pkg.test_proc;
Return variable's value = 123

PL/SQL procedure successfully completed.

SQL>

推荐阅读