Команда SQL PL Sql BULK COLLECT, свойство не завершено - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь использовать 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;
/

1 Ответ

0 голосов
/ 21 мая 2018

Похоже, вы не можете использовать оператор возврата так, как вы пытаетесь.Ответ на этот вопрос даст вам варианты того, как выполнить вашу задачу.

PLSQL Вставьте в с подзапросом и возвращая предложение

...