Лучший способ - сначала загрузить все файлы, подходящие для заражения вирусом, используя:
insert into VirusScanRequests(type, name, contents, orig_system_reference)
select 'file'
, fle.file_path
, rfe.file_contents
, fle.file_path orig_system_reference
from ( select 'exe' ext from dual@datadictionary
union all
select 'dat' from dual@datadictionary
union all
select 'dll' from dual@datadictionary
union all
select 'pdf' from dual@datadictionary
union all
select 'chm' from dual@datadictionary
) ext
join files('c:\PATH', '*.' || ext.ext, false)@os
fle
join read_file(fle.file_path)@os rfe
on length(rfe.file_contents) < 32e6
--
-- Allow restarts with incremental loading: when already requested skip it.
--
where fle.file_path not in (select name from virusscanresults )
А потом через некоторое время проверяем результат сканирования на вирусы:
select vst.name
, vsr.positives
, vsr.total
from VirusScanResults vst
join VirusScanReport('file', vst.resource) vsr
where vst.resource is not null
order
by vsr.positives desc
Когда вы замените vsr.positives
на vsr.*
Вы получите список всех антивирусных сканеров и их результаты.
Вы также можете запланировать его частое выполнение или включить его в используемую вами программу сборки.