Bonjour

j'ai fait un INSERT qui se base sur un SELECT dynamique :

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
21
22
23
24
25
26
27
DECLARE
	LConn_conn_id    EXEC_SQL.CONNTYPE;
	LCu_spec       	EXEC_SQL.CURSTYPE;
	LC_sql_stmt      VARCHAR2(500);
	LI_nIgn        	PLS_INTEGER;
	LC_code_article  VARCHAR2(40);
	LC_description   VARCHAR2(240);
	LC_spec  	VARCHAR2(30);
	i NUMBER;
BEGIN
   LConn_conn_id := EXEC_SQL.DEFAULT_CONNECTION;
   LCu_spec    := EXEC_SQL.OPEN_CURSOR(LConn_conn_id);
  --LC_sql_stmt  := 'INSERT INTO SWM_SPE_DT_1_4 (CODE_ARTICLE, DESCRIPTION, SPECIFICATION) ' || vv_requete_debut || vv_requete_fin;
   LC_sql_stmt  := 'INSERT INTO SWM_SPE_DT_1_4 (CODE_ARTICLE, DESCRIPTION, SPECIFICATION) ' || 'SELECT ''g'', ''h'', ''i'' FROM DUAL';
 
   EXEC_SQL.PARSE(LConn_conn_id, LCu_spec, LC_sql_stmt);
   LI_nIgn := EXEC_SQL.EXECUTE(LConn_conn_id, LCu_spec);
 
   EXEC_SQL.CLOSE_CURSOR(LConn_conn_id, LCu_spec);
   EXEC_SQL.CLOSE_CONNECTION(LConn_conn_id);
  :swm_spe_dt_1_21.description := :swm_spe_dt_1_21.description;
--commit;
   commit_form;
EXCEPTION WHEN EXEC_SQL.PACKAGE_ERROR THEN
   EXEC_SQL.CLOSE_CURSOR(LConn_conn_id, LCu_spec);
   EXEC_SQL.CLOSE_CONNECTION(LConn_conn_id);
END;
le problème est lors du commit ou commit_form, j'ai un message qui me dit qu'aucune modification a eu lieu, du coup j'ai modifié un champ de mon block en lui remettant sa valeur mais j'ai quand même le message.

Comment faire un commit de mon instruction sans forcément committer l'écran ?

Merci