首页 > 解决方案 > 如何使用 APEX 函数编译 Oracle 包?

问题描述

我正在尝试编译我的同事留给我的 Oracle 包。但是,包装规格。包含一些我的 Oracle 环境中可能没有构建的功能。

create or replace PACKAGE AAA IS
  g_session     VARCHAR2(400) := v('SESSION');
  g_user        VARCHAR2(400) := v('APP_USER');

  PROCEDURE p_1;
END AAA;

当我尝试在 Oracle 开发人员中编译包规范时,我说

'V' must be declared.

由于给我留下这段代码的同事不再可用,我不知道如何编译它们。

标签: oracleplsqloracle-apexplsql-package

解决方案


v功能在 Apex 环境中是有意义的;它将返回您传递给它的参数的值。在您的示例中,将是这样的:

v('SESSION') = 32604633949883   --> session ID
v('APP_USER') = LITTLEFOOT      --> user logged to Apex

除了 Apex 环境之外,该v函数还可以从您命名的 PL/SQL 存储过程、包等中运行。

由于您无法编译该代码,因此包含该软件包的数据库中似乎没有安装 Apex。有没有?如果没有,那么您将无法编译它,因此您可以:

  • 安装 Apex,或
  • 从代码中删除v函数调用

推荐阅读