首页 > 解决方案 > oracle 19c 中的内部与外部数据类型

问题描述

我读了很久Oracle documentation,仍然无法理解有什么区别和实际含义Internal vs External datatype。在oracle 19c我阅读内部与外部数据类型。

有人可以建议,下面的代码如何与..它不兼容oracle19c只是标题。我认为存在一些datatype问题,但无法弄清楚。

我无法理解低于package specification 与oracle19c. 此文件已被扫描无效。Oracle 文档没有帮助

CREATE OR REPLACE PACKAGE ABC_ECC_DATASECURITY_PKG_PUB AS
/* $Header: ABCCCDSS.pls 120.0.12020000.2 2020/11/17 21:49:12 mgarg noship $ */

  PROCEDURE GetFilterAttributeValues
  (   p_dataset_key    IN         VARCHAR2,
      p_user_id        IN         NUMBER,
      p_org_id         IN         NUMBER,
      p_resp_id        IN         NUMBER,
      p_resp_app_id    IN         NUMBER,
      p_sec_group_id   IN         NUMBER,
      p_params         IN         ecc_sec_field_values DEFAULT NULL,
      x_return_status  OUT NOCOPY VARCHAR2,
      x_return_message OUT NOCOPY VARCHAR2,
      x_sec_filter     OUT NOCOPY CLOB
  );

END ABC_ECC_DATASECURITY_PKG_PUB;
/

COMMIT;
EXIT;

有人可以建议我oracle internal and external datatype并在上面提供任何帮助specification吗?

我在 oracle 文档中读到了这个。 在此处输入图像描述

https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/data-types.html#GUID-D69455D9-CE01-44CC-B5A9-E541C7774805

这里提到了internal vs external datatypehttps://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/data-types.html#GUID-027FB2E2-593C-43F1-9184-DFEF7A984A27

标签: databaseoracleplsqloracle-sqldeveloperoracle19c

解决方案


如果您省略了用户定义的数据类型,则您的包很好ecc_sec_field_values

CREATE OR REPLACE PACKAGE ABC_ECC_DATASECURITY_PKG_PUB AS

  PROCEDURE GetFilterAttributeValues
  (   p_dataset_key    IN         VARCHAR2,
      p_user_id        IN         NUMBER,
      p_org_id         IN         NUMBER,
      p_resp_id        IN         NUMBER,
      p_resp_app_id    IN         NUMBER,
      p_sec_group_id   IN         NUMBER,
      x_return_status  OUT NOCOPY VARCHAR2,
      x_return_message OUT NOCOPY VARCHAR2,
      x_sec_filter     OUT NOCOPY CLOB
  );

END ABC_ECC_DATASECURITY_PKG_PUB;
/

Package ABC_ECC_DATASECURITY_PKG_PUB compiled

但是,如果您包含ecc_sec_field_values,我会收到错误消息:

CREATE OR REPLACE PACKAGE ABC_ECC_DATASECURITY_PKG_PUB AS

  PROCEDURE GetFilterAttributeValues
  (   p_dataset_key    IN         VARCHAR2,
      p_user_id        IN         NUMBER,
      p_org_id         IN         NUMBER,
      p_resp_id        IN         NUMBER,
      p_resp_app_id    IN         NUMBER,
      p_sec_group_id   IN         NUMBER,
      p_params         IN         ecc_sec_field_values DEFAULT NULL,
      x_return_status  OUT NOCOPY VARCHAR2,
      x_return_message OUT NOCOPY VARCHAR2,
      x_sec_filter     OUT NOCOPY CLOB
  );

END ABC_ECC_DATASECURITY_PKG_PUB;
/

Error(9,35): PLS-00201: identifier 'ECC_SEC_FIELD_VALUES' must be declared

我猜这是TYPE在其他文件中声明的。找找CREATE OR REPLACE TYPE ecc_sec_field_values什么的。

顺便说一句,这COMMIT似乎很危险,因为原作者似乎不了解CREATE语句的提交行为......


推荐阅读