【问题标题】:PL Sql BULK COLLECT SQL command not property endedPL Sql BULK COLLECT SQL 命令没有属性结束
【发布时间】:2018-05-21 15:42:59
【问题描述】:

我正在尝试使用 BULK COLLECT INTO,但我得到一个 ORA-00933 SQL 命令未正确结束。我查看了我的语法,但不确定我做错了什么。难道我做错了什么?

问题似乎与 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;
/

【问题讨论】:

  • 当其他人为空时例外:爱它!!!。你能在那里输出异常触发的输出,只是为了检查是否出了问题?
  • 对不起。我可以添加一个输出,但问题是我什至无法编译这个过程,所以我无法运行它
  • "RETURNING PALLET_HOLD_ID bulk collect INTO t_pallet_ids" ..... 这似乎是在 INSERT INTO ..... SELECT .... 语句之后不需要的行
  • 我正在尝试获取由序列触发器生成的pallet_hold_id 列值。

标签: sql oracle plsql bulk-collect


【解决方案1】:

您似乎无法按照您尝试的方式使用返回语句。这个问题的答案将为您提供如何完成任务的选项。

PLSQL Insert into with subquery and returning clause

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2019-07-10
    • 2012-04-06
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多