Долго читал 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?
Я читал это в документации оракула.

здесь упоминается internal vs external datatype.
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/data-types.html#GUID-027FB2E2-593C-43F1-9184-DFEF7A984A27
@JonHeller Спасибо, Джон, я обновил вопрос. на самом деле мы переносим наше приложение с 12c на 19c (ADB), поэтому команда разработчиков подчеркнула, что эти файлы необходимо изменить. Я просто просматриваю документацию и редактирую ее. Я думал, что это небольшой файл, поэтому может быть проблема с типом данных. Я изменил вопрос. Пожалуйста помоги.
«внутренние» типы данных известны как «встроенные», и они перечислены в таблице 5.1 приведенной выше ссылки. следовательно, "внешние" типы данных - это те, которые могут быть обнаружены из какого-либо другого источника. "Код внешнего типа данных указывает Oracle Database, как переменная хоста представляет данные в вашей программе. Это определяет, как данные преобразуются, когда они возвращаются в выходные переменные в вашей программе, или как они преобразуются из входных (связываемых) переменных в Значения столбца Oracle Database ".
Спасибо, Пол. не могли бы вы привести один пример?
Когда вы говорите «команда по выпуску подчеркнула, что эти файлы необходимо изменить» - что именно, по их словам, необходимо изменить? Я не вижу ничего явно неправильного в спецификации пакета. Может, проблема с кастомным типом ecc_sec_field_values?
Вы цитируете руководство программиста OCI. Скорее всего, это вам не поможет, как для C или C++, а ваш код выглядит как PL / SQL. Во-вторых, CLOB в вашем случае выглядит нормально.

Ваш пакет в порядке, если вы не укажете пользовательский тип данных 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 ...
Что вы имеете в виду, говоря «Этот файл был отсканирован как недопустимый»? Если вы получаете сообщение об ошибке, было бы полезно, если бы вы отредактировали свой вопрос и распечатали полное сообщение об ошибке вместе с тем, какой инструмент сгенерировал сообщение об ошибке. Что вы имеете в виду под внутренними и внешними типами данных - используете ли вы OCCI или какой-либо другой инструмент для подключения к базе данных?