У меня есть таблица, которая имеет column_id типа varchar2. Эта таблица может содержать 1, 0 или несколько строк. Моя бизнес-логика зависит от каждого случая.Извлечение одной колонки в массив
Я пытаюсь извлечь столбец в массив, но я получаю странные ошибки (учитывая мое ограниченное знание PL/SQL)
TYPE t_col_id IS TABLE OF TEST_TABLE.COLUMN_ID%TYPE INDEX BY BINARY_INTEGER;
AR_COL_ID T_COL_ID;
Тогда я пытаюсь получить данные в этом массиве
SELECT COLUMN_ID INTO AR_SIM_ID FROM TEST_TABLE WHERE COLUMN_ID = 1;
и я получаю эту ошибку
Error(7,3): PL/SQL: SQL Statement ignored
Error(7,25): PLS-00597: expression 'AR_SIM_ID' in the INTO list is of wrong type
Error(7,35): PL/SQL: ORA-00904: : invalid identifier
Есть ли что-то, что мне не хватает? Мой исходный код будет использовать этот массив в качестве
BEGIN
-- FETCH ARRAY QUERY
IF (AR_SIM_ID.LENGTH = 0) THEN
-- BUSINESS LOGIC 1
ELSE
-- BUSINESS LOGIC 2
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- BUSINESS LOGIC 3
END;
Дело в том, что мой запрос использует по крайней мере 4 соединения. Запрос тяжелый. Если есть данные (1 запись), мне нужно будет использовать значение этой записи для «обновления». Если есть несколько данных, тогда мне нужно обновить некоторую другую таблицу для нескольких запросов. Если данных нет, тогда мне нужно «вставить» новую запись. Поэтому, если я использую запрос count, тогда в случае, когда число равно 1, мне придется повторно запустить запрос, чтобы получить его значение, чтобы я мог обновить. –
@ x.509 ах, я вижу, поэтому я считаю, что 'BULK COLLECT' решит вашу проблему? – wweicker
действительно это будет :) спасибо –