Вставьте массив в таблицу Oracle Apex - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть таблица, которая выглядит следующим образом:

CREATE TABLE "USER"
  (     "NUMBER" VARCHAR2(8) NOT NULL ENABLE,
        "ROLE" VARCHAR2(100) NOT NULL ENABLE,
        "QUESTION_ORDER" "T_NUMARRAY",
        "FORENAME" VARCHAR2(20),
        "SURNAME" VARCHAR2(20),
        CONSTRAINT "USER_PK" PRIMARY KEY ("NUMBER")
  USING INDEX ENABLE
  )
VARRAY "QUESTION_ORDER" STORE AS SECUREFILE LOB
/

Я пытаюсь обновить столбец Order с помощью массива, заполненного числами. Мой код, который генерирует массив:

DECLARE
     TYPE T_NUMARRAY IS TABLE OF number INDEX BY BINARY_INTEGER;
     numArray T_NUMARRAY;
BEGIN
     SELECT PAGE_ID BULK COLLECT INTO numArray FROM APEX_APPLICATION_PAGES WHERE APPLICATION_ID = 943 AND PAGE_NAME LIKE '%Questions_%' ORDER BY PAGE_ID ASC;
     FOR i IN 1 .. numArray.Count Loop
        UPDATE USER SET Question_Order = numArray WHERE QNUMMER = :APP_USER;
     END LOOP;
END

Когда я пытаюсь обновить записи в таблице, я получаю сообщение об ошибке: ORA-06550: строка 9, столбец 48: PLS-00382: выражение неверно типа я не знаю, как правильно вставить массив. Может быть, кто-то может мне помочь? :)

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Я добавил DDL в первом посте.

Да, мне действительно нужен массив, потому что я хочу сохранить несколько чисел в одном столбце и использовать их позже на другой странице. Где я могу выбрать массив в отчете Classi c. Пользователь должен иметь возможность выбрать свой порядок Вопроса, если он хочет начать с вопроса 1 или, может быть, 5. У меня есть другая страница, на которой я выберу этот столбец, а затем мне понадобится каждый номер массива.

0 голосов
/ 22 апреля 2020

Если у вас действительно есть таблица со столбцом типа T_NUMARRAY, то T_NUMARRAY необходимо определить на уровне схемы с помощью оператора CREATE TYPE. Если это правда, то вы не должны определять T_NUMARRAY локально. Удалите строку сразу после DECLARE, где вы определяете локальную коллекцию с тем же именем.

Я бы чувствовал себя намного лучше, если бы вы предоставили больше информации в своем вопросе. Пожалуйста, добавьте DDL, который создает таблицу для начинающих.

Вам действительно нужно хранить данные в виде массива? Я бы избегал этого, если это возможно, и вместо этого сохранял бы данные «обычным» способом.

...