错误INSERT INTO ...将行返回到表中

时间:2016-05-14 16:39:15

标签: oracle plsql dml

我试图将插入行返回到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;

1 个答案:

答案 0 :(得分:0)

中存在拼写错误

插入结果值p_tResultats(i)返回*大量收集到p_tAjoutes;

这不是表RESULATS而是“RESULTATS”

此外我猜你不能使用“RETURNING *”,你必须指定所有列名,如下所示: PL/SQL How return all attributes in ROW