Я пытаюсь использовать BULK COLLECT INTO, но получаю SQL-команду ORA-00933, которая не была правильно завершена.Я посмотрел на мой синтаксис, но не уверен, что я делаю неправильно.Я делаю что-то неправильно?
Проблема, похоже, связана с предложением RETURNING.Если я удаляю возвращаемое предложение, оно прекрасно компилируется
CREATE OR REPLACE PROCEDURE CIMS.QC_PALLET_HOLD_BY_HOUR_A_REL( QC_HOLD_ID_IN IN INTEGER, HOUR_STR IN VARCHAR2, DAY_CODE IN VARCHAR2, TOP_CODE_IN IN VARCHAR2, QC_RLS_DISPOSITION_ID_IN INTEGER, SUCC_PALS_OUT OUT VARCHAR2)
IS
l_count binary_integer;
l_array dbms_utility.lname_array;
curr_prod_hour varchar2(1);
TYPE success_hours is TABLE of pallet_hold.pallet_no%type;
TYPE t_pallet_ids is TABLE of pallet_hold.pallet_hold_id%type;
BEGIN
dbms_utility.comma_to_table(
list => regexp_replace(HOUR_STR, '(^|,)','\1x'),
tablen => l_count,
tab => l_array
);
BEGIN
forall i in l_array.FIRST .. l_array.last
INSERT INTO PALLET_HOLD(PALLET_NO, TOP_CODE, BOTTOM_CODE, QC_HOLD_ID)
SELECT V.PALLET_NO, V.TOP_CODE, V.BOTTOM_CODE, QC_HOLD_ID_IN
FROM PALLET_MASTER_INQ_VIEW V
WHERE PROD_HOUR = substr(l_array(i),2) AND SUBSTR(BOTTOM_CODE,0,5) = DAY_CODE AND TOP_CODE = TOP_CODE_IN
AND NOT EXISTS (SELECT 1 FROM PALLET_HOLD WHERE QC_HOLD_ID = QC_HOLD_ID_IN AND PALLET_NO = V.PALLET_NO)
RETURNING PALLET_HOLD_ID bulk collect INTO t_pallet_ids;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
RAISE; --raise_application_error(-20333, 'Error QC_PALLET_HOLD_BY_HOUR');
END;
/