Как устранить ошибку «FRM-30408: неверное значение» в формах Oracle? - PullRequest
1 голос
/ 21 января 2011

Моя форма имеет главный блок (ORDER) и подробный блок (ORDER_LINE). Блок ORDER имеет элемент ORDER_ID (это первичный ключ), определенный следующим образом:

A screen shot of the ORDER_ID item's property palette

Блок ORDER_LINE использует элемент ORDER.ORDER_ID в качестве аргумента для запроса своих записей:

A screen shot of the ORDER_LINE block's property palette

A screen shot of the ORDER_ID argument's property palette

Процедура ORDERING_PACKAGE.QUERY_ORDER_LINES объявлена ​​следующим образом:

PROCEDURE
  query_order_lines
  (
    order_lines   IN OUT ORDER_LINE_CURSOR_TYPE,
    order_id      NUMBER,
    line_number   VARCHAR2,
    bin           VARCHAR2,
    plu           VARCHAR2,
    description   VARCHAR2
  );

Когда я пытаюсь скомпилировать форму Oracle ( Ctrl + T ), я получаю ошибку, подобную этой:

FRM-30408: Invalid value.
Reference: ORDER.ORDER_ID
Block: ORDER_LINE
Procedure: ORDERING_PACKAGE.QUERY_ORDER_LINES
Form: ORDER_FORM
FRM-30085: Unable to adjust form for output.

Согласно документации, рекомендуемое решение:

Причина: значение, введенное для указанного типа данных, недопустимо.

Действие: Исправьте одно или несколько из следующих:

  1. Тип данных аргумента, соответствующего данному значению в списке аргументов процедуры указанной процедуры.
  2. Значение аргумента в списке аргументов процедуры указанной процедуры.

Ни одна из этих рекомендаций не работает:

  1. Тип данных аргумента в форме (NUMBER) идентичен типу данных параметра процедуры (NUMBER).
  2. Значение аргумента (ORDER.ORDER_ID) также имеет тип NUMBER (см. Первый снимок экрана)

Как мне устранить эту ошибку?

1 Ответ

2 голосов
/ 21 января 2011

Ах да, очень полезный файл справки в Oracle Forms. «Ваш параметр неверен, измените его, осел».

В этом случае не так много помощи, так как ошибка немного более тонкая.

Значение, которое вы указываете для аргумента ORDER.ORDER_ID, не будет ссылаться в этом случае. Вам нужно предварительно подождать его с хорошим ole :, чтобы идентифицировать его как переменную связывания. «:ORDER.ORDER_ID» - это то, как оно должно читаться в поле «Значение» для аргумента.

По сути, столбец значений должен быть фактическим значением, на которое ваша форма может ссылаться в блоке PL / SQL (в форме).

Надеюсь, это поможет!

...