sql - 包规范中 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;
解决方案
酷,不是吗?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>
推荐阅读
- java - 如何按频率排序字符串数组,但不按字母顺序
- python - 使用 Python 进行多维 for 循环
- firebase - 如何使用 API / 命令行启用 Cloud Firestore 原生模式?
- c++ - 如何使用 Clang++ 生成和使用预编译头文件?
- java - 如何调用非静态方法?
- r - R提取不同空间多边形属性的栅格和直方图
- c# - 如何先显示文本,直到从数据库 sql 检索图像
- mongodb - 使用 mongoDB 中的聚合查询以获取特定的子文档?
- css - 如何将两个 flexbox 容器并排设置
- ibeacon - 使用 Android 信标库进行传输时,无法在 Google Beacon Tools 应用程序的未注册选项卡中看到 Eddystone UID