oracle 19c 中的内部与外部数据类型
Internal vs external data type in oracle 19c
看了很久Oracle documentation
,还是没明白Internal vs External datatype
的区别和实际含义。在 oracle 19c
中,我阅读了内部数据类型与外部数据类型。
有人可以建议,下面的代码如何与 oracle19c
不兼容。它只是 header。我认为存在一些 datatype
问题但无法弄清楚。
我无法理解以下 package specificatio
n 为何与 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 文档中读到了这个。
这里提到internal vs external datatype
。
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/data-types.html#GUID-027FB2E2-593C-43F1-9184-DFEF7A984A27
如果你省略了用户定义的数据类型,你的包就很好 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
语句的提交行为...
看了很久Oracle documentation
,还是没明白Internal vs External datatype
的区别和实际含义。在 oracle 19c
中,我阅读了内部数据类型与外部数据类型。
有人可以建议,下面的代码如何与 oracle19c
不兼容。它只是 header。我认为存在一些 datatype
问题但无法弄清楚。
我无法理解以下 package specificatio
n 为何与 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 文档中读到了这个。
这里提到internal vs external datatype
。
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/data-types.html#GUID-027FB2E2-593C-43F1-9184-DFEF7A984A27
如果你省略了用户定义的数据类型,你的包就很好 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
语句的提交行为...