Bonjour,

J'ai un petit soucis avec un bloc basé sur une procédure stockée (table PL/SQL).
Lors de l'insert, j'aimerais que le champ mis à jour par trigger (clé primaire sur séquence) soit renvoyé à forms aprés l'insert (INSERT_PROCEDURE)
Dans ma procédure, je mets bien à jour les infos via un INSERT...RETURNING...

En mode debug dans ma forms, je vois bien que la table PL/SQL a bien été mise à jour (break aprés l'appel au package). Pourtant le champ du formulaire n'est pas mis à jour, bien que
  • le champ soit déclaré basé
  • "Column name" soit égal au nom du champ de la base
  • la propriete 'DML RETURNING VALUE" du bloc soit positionnée à "YES"
INSERT_PROCEDURE dans le formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
-- Automatically generated trigger for procedure data source.
-- Do not edit.
-- If this trigger fails to compile, verify the block procedure data source is correct.
DECLARE
bk_data PKGCONTACT.CONTACT_TAB;
BEGIN
PLSQL_TABLE.POPULATE_TABLE(bk_data, 'PERSO_SOC', PLSQL_TABLE.INSERT_RECORDS);
PKGCONTACT.CONTACT_INSERT(bk_data);
END;
Fonction d'insertion coté serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* Formatted on 13/10/2011 16:40:03 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE BODY PLUTON.pkgcontact
AS
PROCEDURE contact_insert (contact_data IN OUT contact_tab)
   IS
      v_num_perso   perso.num_perso%TYPE;
   BEGIN
      FOR i IN 1 .. contact_data.COUNT
      LOOP
         INSERT INTO perso (nom_perso,
                            pnom_perso,
....
 VALUES   (contact_data (i).nom_perso,
                      contact_data (i).pnom_perso,
....
)
         RETURNING   num_perso      INTO   contact_data (i).num_perso;-- valeur à récupérer dans mon champs basé
END LOOP;
END;
Ai-je raté qq chose ?
Ou ce que j'essaye de faire est impossible ?

Merci

PS : Version de forms et du serveur dans la signature.