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
INSERT_PROCEDURE dans le formulaire
- 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"
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 -- 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;
Ai-je raté qq chose ?
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;
Ou ce que j'essaye de faire est impossible ?
Merci
PS : Version de forms et du serveur dans la signature.
Partager