ОБНОВЛЕНО: код работает должным образом, но производительность очень низкая. Когда я выполняю поиск без включения данных CLOB, запрос выполняется очень быстро, но если я включаю переменную CLOB в свой поиск, запрос выполняется очень медленно. Я использую CLOB для передачи больших строковых данных ('aaaaaaa, bbbb, c, dd ddd ...') и сохраняю эти данные в глобальной таблице для повышения производительности, я думал, что это позволит максимально повысить производительность запросов. Как я могу улучшить / использовать мою переменную CLOB для лучшей производительности? Пожалуйста, посмотрите на код ниже для получения дополнительной информации. Ценим за любую помощь. Я все еще борюсь с производительностью, может кто-нибудь помочь / предоставить какие-либо предложения, пожалуйста.
GLOBAL TT GlobalTemp_EMP( //this already exists
emp_refno (30 byte);
)
Create or replace PROCEDURE Employee(
emp_refno IN CLOB
)
AS
Begin
OPEN p_resultset FOR
with inputs ( str ) as ( //red error line here
select to_clob(emp_refno )
from dual
),
prep ( s, n, token, st_pos, end_pos ) as (
select ',' || str || ',', -1, null, null, 1
from inputs
union all
select s, n+1, substr(s, st_pos, end_pos - st_pos),
end_pos + 1, instr(s, ',', 1, n+3)
from prep
where end_pos != 0
)
INSERT into GlobalTemp_EMP //red error line here
select token from prep;
select e.empname, e.empaddress, f.department
from employee e
join department f on e.emp_id = t.emp_id
and e.emp_refno in (SELECT emp_refno from GlobalTemp_EMP) //using GTT In subquery