मुझे लगता है कि आप एक save exceptions
रखना चाहते हैं आपके bulk collect
. में ।
DECLARE
TYPE dataDate IS TABLE OF DATE;
l_dataDate dataDate;
dml_errors EXCEPTION;
PRAGMA exception_init(dml_errors, -24381);
BEGIN
select data1
BULK COLLECT INTO l_dataDate
from USER.TABLE_DATA;
BEGIN
FORALL i IN l_dataDate.FIRST..l_dataDate.LAST SAVE EXCEPTIONS
INSERT INTO USER.DIMDATE
SELECT
to_number(to_char(l_dataDate(i), 'YYYYMMDDHH24MISS')),
to_number(to_char(l_dataDate(i), 'YYYYMMDD')),
l_dataDate(i),
to_number(to_char(l_dataDate(i), 'DD')),
to_char (l_dataDate(i), 'Day'),
to_number(to_char (l_dataDate(i), 'MM')),
to_char (l_dataDate(i), 'Month'),
to_number(to_char(l_dataDate(i), 'YYYY'))
FROM DUAL
WHERE NOT EXISTS (SELECT 1
FROM USER.DIMDATE
WHERE COD_FECHA=to_number(
to_char(l_dataDate(i),
'YYYYMMDDHH24MISS')));
EXCEPTION
WHEN dml_errors
THEN
FOR i IN 1..sql%bulk_exceptions.count
LOOP
<<do something with the exceptions>>
END LOOP;
END;
ऐसा कुछ के लिए, हालांकि, पीएल/एसक्यूएल का उपयोग करने का कोई कारण नहीं है। बस एक ही INSERT
लिखें स्टेटमेंट संभवतः डीएमएल त्रुटि लॉगिंग के साथ यदि table_data
अमान्य डेटा है जिसे लॉग करने की आवश्यकता है।