Как извлечь данные, хранящиеся в ДЛИННОМ столбце (тип данных), с помощью PL/SQL?

#plsql #plsqldeveloper #plsql-package

Вопрос:

Я работаю над проектом, в котором есть целевая таблица, в которой в таблицу постоянно вводится длинный msg, а в таблице два столбца: один идентификатор и текст MSG(в этом столбце хранится длинный msg). В этом длинном msg много данных, из которых я должен извлекать данные о выгруженных курьерах и данные о выгруженных курьерах Томов и хранить их в другой таблице. Ниже приведен образец msg.

 <msg-header>
************ 

Couriers lifted
-------------
* NO Couriers items lifted *

 
Loaded Volumes  Items
-------------------
* NO Loaded Volumes  Items *
 
Unloaded Couriers
--------------
Courier_no/Courier box details 
Courier_no/Courier box details
Courier_no/Courier box details

Unloaded Volumes Couriers 
--------------------
Courier_no/Courier box details 
Courier_no/Courier box details
Courier_no/Courier box details
 

Ответ №1:

Вы можете получить значение столбца длиной sql, используя символьный тип данных в pl/sql, т. е. тип данных pl/sql-long.
Примечание: Тип pl/sql-long-Datatype полностью отличается от типа sql-long-datatype.

Для примера я предположил, что таблица называется «curier».

 declare
    strMSG  long; -- this is pl/sql-long-datatyp not sql-long-datatype!
begin
    for msgtab in (
      select id, msg
        from courier -- add your condition here
    ) loop
      -- do something with the data
      strMsg := msgtab.msg;
    end loop; 
end;