Как добавить значение в массив, используя цикл FOR - PullRequest
0 голосов
/ 27 января 2020
---This API will break the string RESULT__ in each (^) 
resultado := lmw_base_util_api.Get_MV_Field(RESULT__,'^',A);

----WHICH ARE 7 OF THIS (^) - 1 = 6 WORDS IN THE RESULT__ STRING,
--- WHICH ARE:  All_Equipm    Consulting    DITCHCLEANER    Friction_M    JUAN    LUIS   = 6
NUMBER_ELEMENTS := NUMBER_DEVISION_ - 1; 

У меня есть следующий скрипт:

DECLARE
RESULT__ varchar2(100) :='^All_Equipm^Consulting^DITCHCLEANER^Friction_M^JUAN^LUIS^';
NUMBER_DEVISION_ NUMBER ;
resultado VARCHAR2(400);

---This cursor will give me the number of elements in the string
CURSOR GET_NUMBER_DEVISION IS
select lmw_base_util_api.Get_DCount(RESULT__,'^') AS NUMBER_DEVISION from dual;

BEGIN

FOR REC IN GET_NUMBER_DEVISION LOOP
   NUMBER_DEVISION_ := REC.NUMBER_DEVISION;
        DBMS_OUTPUT.PUT_LINE(NUMBER_DEVISION_);
        FOR A IN 1 .. NUMBER_DEVISION_ LOOP
          resultado := lmw_base_util_api.Get_MV_Field(RESULT__,'^',A);
          DBMS_OUTPUT.PUT_LINE(resultado);
         END LOOP;
END LOOP;


END;

Как я могу сохранить каждое значение результата в массиве? Кроме того, я хотел бы использовать значение за пределами For l oop, потому что мне нужно разделить каждое на (,) Мой результат должен быть:

All_Equipm, Consulting, DITCHCLEANER, Friction_M, JUAN, LUIS

1 Ответ

1 голос
/ 27 января 2020

Вам не нужно ни al oop, ни массив. Все, что вам нужно, это заменить символ «^» запятой. Единственный вопрос - есть ли запятая или нет. Я полагаю, вы видите Oracle документацию для функций. В этом случае SUBSTR и REPLACE.

select case when substr(res,1,1) = ','
            then substr(res,2)
            else res
       end resultado
 from (select replace('^All_Equipm^Consulting^DITCHCLEANER^Friction_M^JUAN^LUIS^' ,'^',',') res  from dual)
...