【问题标题】:Error INSERT INTO ... RETURNING row into table错误 INSERT INTO ... RETURNING 行到表中
【发布时间】:2016-09-10 18:54:14
【问题描述】:

我正在尝试将插入行返回到 PL/SQL 中的 ROWTYPE 表中,但出现错误:

ORA-00936:缺少表达式。

包头中的表类型声明:

  TYPE t_retourResult IS TABLE OF RESULTATS%ROWTYPE;

以及插入包体时出错:

PROCEDURE EncoderResultats(p_tResultats IN t_resultats, p_tAjoutes OUT t_retourResult, p_tErreurs OUT t_erreur)
    IS
      ExceptTResultats EXCEPTION;
      i INTEGER;
    BEGIN
      IF(p_tResultats.COUNT = 0) THEN RAISE ExceptTResultats; END IF;

      FORALL i IN INDICES OF p_tResultats SAVE EXCEPTIONS
        INSERT INTO RESULATS VALUES p_tResultats(i) RETURNING * BULK COLLECT INTO p_tAjoutes;

      COMMIT;

    EXCEPTION
        WHEN ExceptTResultats THEN RAISE_APPLICATION_ERROR(-20006,'Le tableau est vide, aucun resultat à ajouter');
        WHEN OTHERS THEN RAISE;    
    END EncoderResultats;

【问题讨论】:

    标签: oracle plsql dml


    【解决方案1】:

    有错别字

    INSERT INTO RESULATS VALUES p_tResultats(i) RETURNING * BULK COLLECT INTO p_tAjoutes;

    不是表格 RESULATS 而是“RESULTATS”

    此外,我猜您不能使用 "RETURNING *" ,您必须指定此处报告的所有列名: PL/SQL How return all attributes in ROW

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2017-01-08
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多