Когда я просто написать запрос, в котором он имеет код, какИспользование строки в Oracle хранимой процедуры
Select * from ..
where ...
AND gfcid in (select regexp_substr('1005771621,1001035181'||',','\d+',1,level)
from dual
connect by level <= (select max(length('1005771621,1001035181')-length(replace('1005771621,1001035181',',')))+1
from dual))
Он работает.
Но я хочу сделать динамический запрос в хранимой процедуре оракула. Мне это понравилось:
GDFCID_STRING := ' select regexp_substr('
|| '1005771621,1001035181'
|| ','
|| ','
|| '\d+'
|| ',1,level) from dual connect by level <= (select max(length('
|| '1005771621,1001035181'
|| ')-length(replace('
|| '1005771621,1001035181'
|| ','
|| ','
|| ')))+1 from dual)';
Select * from ..
where ...
AND gfcid in (GDFCID_STRING)
Но теперь это работает.
Я думаю, что хранимая процедура - это то, что вам нужно, с входными переменными. – ErrorNotFoundException
Почему вы хотите получить динамический запрос? –
Итак, вы хотите разбить строку 'GDFCID_STRING' на список числовых значений, а затем использовать ее как параметр' in'', который нужно сравнить с 'gfcid', правильно? – Rachcha