Внутренние и внешние типы данных в 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 19c

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

здесь упоминается internal vs external datatype. https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/data-types.html#GUID-027FB2E2-593C-43F1-9184-DFEF7A984A27

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

Jon Heller 30.03.2021 08:07

@JonHeller Спасибо, Джон, я обновил вопрос. на самом деле мы переносим наше приложение с 12c на 19c (ADB), поэтому команда разработчиков подчеркнула, что эти файлы необходимо изменить. Я просто просматриваю документацию и редактирую ее. Я думал, что это небольшой файл, поэтому может быть проблема с типом данных. Я изменил вопрос. Пожалуйста помоги.

Mahima 30.03.2021 08:43

«внутренние» типы данных известны как «встроенные», и они перечислены в таблице 5.1 приведенной выше ссылки. следовательно, "внешние" типы данных - это те, которые могут быть обнаружены из какого-либо другого источника. "Код внешнего типа данных указывает Oracle Database, как переменная хоста представляет данные в вашей программе. Это определяет, как данные преобразуются, когда они возвращаются в выходные переменные в вашей программе, или как они преобразуются из входных (связываемых) переменных в Значения столбца Oracle Database ".

Paul Maxwell 30.03.2021 08:57

Спасибо, Пол. не могли бы вы привести один пример?

Mahima 30.03.2021 08:58

Когда вы говорите «команда по выпуску подчеркнула, что эти файлы необходимо изменить» - что именно, по их словам, необходимо изменить? Я не вижу ничего явно неправильного в спецификации пакета. Может, проблема с кастомным типом ecc_sec_field_values?

Jon Heller 30.03.2021 09:06

Вы цитируете руководство программиста OCI. Скорее всего, это вам не поможет, как для C или C++, а ваш код выглядит как PL / SQL. Во-вторых, CLOB в вашем случае выглядит нормально.

wolφi 04.04.2021 11:26
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
6
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш пакет в порядке, если вы не укажете пользовательский тип данных 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 ...

Другие вопросы по теме