Прочитав ваши последние комментарии, я понимаю, что вы хотите не LOV, а скорее элемент списка. Хотя это может быть и LOV. Первый элемент списка/lov будет иметь все продукты, только тот пользователь выбирает из него, например. Prod1, Prod2, Prod3 ... Второй элемент списка будет иметь все версии, преобразованные из значений, разделенных запятыми, как в вашем примере в таблицу, как в моих примерах ниже. Потому что в моем понимании пользователь может выбрать только одно значение для каждого продукта из этого списка. Один продукт может иметь множество значений, например. Prod1 имеет значения 1,2,3, 4. Но пользователю нужно выбрать только один. Верный? Вот почему вам нужно преобразовать значения запятой в таблицу. Первый запрос выбора является лк-л в следующем:
SELECT prod_id
FROM your_prod_table
/
id
--------
myProd1
myProd2
.....
Второй запрос должен выбрать все варианты, где product_id находится в your_prod_table:
SELECT version FROM your_versions_table
WHERE prod_id IN (SELECT prod_id FROM your_prod_table)
/
Versions
--------
1,2,3,4 -- myProd1 values
a,b,c,d -- myProd2 values
.....
выше будет возвращать все версии для продукта, например, все значения для myProd1 и т. д.
Используйте мои примеры для преобразования запятой. значения в таблицу. Замените harcoded '1,2,3,4' на столбец значений из таблицы. Замените двойным имя вашей таблицы
Если вам нужны продукты и версии в одном запросе и один результат, просто присоедините/нарушите объединение (слева, справа) обе таблицы.
SELECT p.prod_id, v.version
FROM your_prod_table p
, your_versions_table v
WHERE p.prod_id = v.prod_id
/
В этом случае вы получите SMTH Lk это на выходе:
id | Values
------------------
myProd1 | 1,2,3,4
myProd2 | a,b,c,d
Если преобразовать запятые в таблице в приведенном выше запросе, то вы получите это - все в одном списке или LOV:
id | Values
------------------
myProd1 | 1
myProd1 | 2
myProd1 | 3
myProd1 | 4
myProd2 | a
myProd2 | b
myProd2 | c
myProd2 | d
Надеюсь, это поможет. Опять же, вы можете использовать значения LOV или списка, если они доступны в APEX. Для меня имеет смысл два отдельных списка значений - один для других продуктов для версий. В случае элементов списка вам понадобятся два отдельных запроса, как указано выше, и будет проще делать запятую для преобразования таблицы только для значений/версий. Но это зависит от вас.
Разделенный на примеры таблиц:
-- Comma to table - regexp_count --
SELECT trim(regexp_substr('1,2,3,4', '[^,]+', 1, LEVEL)) str_2_tab
FROM dual
CONNECT BY LEVEL <= regexp_count('1,2,3,4', ',')+1
/
-- Comma to table - Length -
SELECT trim(regexp_substr('1,2,3,4', '[^,]+', 1, LEVEL)) token
FROM dual
CONNECT BY LEVEL <= length('1,2,3,4') - length(REPLACE('1,2,3,4', ',', ''))+1
/
-- Comma to table - instr --
SELECT trim(regexp_substr('1,2,3,4', '[^,]+', 1, LEVEL)) str_2_tab
FROM dual
CONNECT BY LEVEL <= instr('1,2,3,4', ',', 1, LEVEL - 1)
/
Выход все, что выше, является тот же:
STR_2_TAB
----------
1
2
3
4
Разделенный на стол - PL/SQL-APEX пример. Для LOV вам нужен SQL не PL/SQL.
DECLARE
v_array apex_application_global.vc_arr2;
v_string varchar2(2000);
BEGIN
-- Convert delimited string to array
v_array:= apex_util.string_to_table('alpha,beta,gamma,delta', ',');
FOR i in 1..v_array.count LOOP
dbms_output.put_line('Array: '||v_array(i));
END LOOP;
-- Convert array to delimited string
v_string:= apex_util.table_to_string(v_array,'|');
dbms_output.put_line('String: '||v_string);
END;
/
Пожалуйста, введите данные образца и/или желаемый результат. Оба лучше. Слишком сложно понять, что вы ищете. – Art
@Art добавил данные образца и желаемый результат, спасибо за совет, любая помощь с благодарностью. –
Извините, до сих пор не понимаю, что вы ищете. Поместите вывод в формат таблицы, например. столбцы, значения ... Используйте ctrl + K для форматирования кода. – Art