Bonjour,
voici un extrait d'une procédure stockée qui insert des lignes dans une base Oracle via un serveur lié (ERP_PROD)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
	declare @ART_CODE varchar(15),
	@tradLib1 varchar(40),
	@tradlib2 varchar(40),
	@tradLib1T varchar(40),
	@tradLib2T varchar(40),
	@tradLangueT varchar(2),
	@tradEtikT decimal;
 
	begin transaction;
 
    set @ART_CODE = '73TEST000';
    set @tradLib1 = 'TEST JFC_1';
    set @tradlib2 = null;
    set @tradLib1T = null;
    set @tradlib2T = null;
    set @tradLangueT = null;
    set @tradEtikT = null;
 
 
	DECLARE @USERNAME VARCHAR(50),
	 @MAIL varchar(250),
	 @AUTRE_MENTION varchar(250),
	 @ArtNumDem int,
	 @ART_STAT4 varchar(10),
	 @artRub7 varchar(5);
 
begin try
 
set @ArtNumDem = (select ART_NUM_DEM from GCARTICLE_TEMP 
					   where ART_CODE = @ART_CODE);
set @ART_STAT4 = (select ART_STAT4 from GCARTICLE_TEMP
	                   where ART_CODE = @ART_CODE);
set @artRub7 = (select ART_RUB7 from GCARTICLE_TEMP
				     where ART_CODE = @ART_CODE);
set @USERNAME = (select ART_USER_NAME FROM GCARTICLE_TEMP WHERE ART_NUM_DEM = @ArtNumDem);
set @MAIL = (select DEPARTEMENT from ADSI where ACCOUNTNAME = @USERNAME);
 
SELECT @ART_CODE=RTRIM(@ART_CODE);
SELECT @tradLib1=RTRIM(@tradLib1);
SELECT @tradlib2=RTRIM(@tradlib2);
 
declare @artSiteFab varchar(3),
		@artStat2 varchar(10);
set @artSiteFab = (select ART_SITE_FAB from GCARTICLE_TEMP
where ART_CODE = @ART_CODE);
set @artStat2 = (select ART_STAT2 from GCARTICLE_TEMP
where ART_CODE = @ART_CODE);
 
if @artSiteFab in ('02','08','04')
begin
update GCARTICLE_TEMP set ART_SITE_FAB = null 
where ART_CODE = @ART_CODE;
end
if @artSiteFab = '03' and @artStat2 = 'STKNE'
begin
update GCARTICLE_TEMP set ART_STAT2 = 'STKNE3'
where ART_CODE = @ART_CODE;
end
if @artSiteFab = '05' and @artStat2 = 'STKNE'
begin
update GCARTICLE_TEMP set ART_STAT2 = 'STKNE5'
where ART_CODE = @ART_CODE;
end
 
--INSERT ER2
INSERT OPENQUERY (ERP_PROD, 'SELECT TRAD_TYPE,TRAD_CODE,TRAD_LANGUE,TRAD_LIBELLE1_TRAD, TRAD_LIBELLE2_TRAD FROM GCTRADUCTION')  
VALUES('ARTICLE_LIB',@ART_CODE,'FR',@tradLib1, @tradlib2);
Cette procédure renvoi un message d'erreur lors de l'exécution :

Le fournisseur OLE DB "OraOLEDB.Oracle" du serveur lié "ERP_PROD" a retourné le message
Un enrôlement existe déjà dans la transaction.
et la ligne qui pose problème est celle juste après le commentaire
--INSERT ER2.

Si quelqu'un peut m'aider c'est avec plaisir, car la je ne vois pas d'ou vient le problème.