2016-05-14 70 views
0

我試圖插入行返回到在PL/SQL ROWTYPE的表,但我有錯誤:錯誤INSERT INTO ... RETURNING行插入表

ORA-00936: missing expression.

表類型聲明在包頭:

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; 

回答

0

存在

012錯字錯誤

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

它不表RESULATS但「RESULTATS」

而且我猜你不能使用「迴歸*」,你必須指定所有列名作爲報道也在這裏: PL/SQL How return all attributes in ROW