SQL Server 2000 (ou MSDE 2000)
J'ai un trigger sur INSERT d'une table de transaction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE TRIGGER TG_EXPORT_TO_MAIT ON [overdrive].[TRANSACTION_TABLE] 
FOR INSERT
AS
DECLARE @TransNo varchar(20)
select @TransNo=TRANS_NO FROM INSERTED
EXEC sp_ExportTransInfo @TransNo


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
CREATE PROCEDURE sp_ExportTransInfo @TransNo VarChar(20) AS
 
DECLARE @transline as varchar(255)
DECLARE @DestinationFile as varchar(255)
 
SET @TransLine = (SELECT    LEFT(RTRIM(LTRIM(TRANS_NO)) + REPLICATE(' ', 10), 10) + 
     LEFT(STATUS, 1) + 
    LEFT(ISNULL(CONVERT(varchar(19), TRANSACTION_START_DATE, 120), REPLICATE(' ', 19)), 19) + 
    LEFT(ISNULL(CONVERT(varchar(19), TRANSACTION_COMPLETE_DATE, 120), REPLICATE(' ', 19)), 19) + 
    LEFT(RTRIM(LTRIM(VEHICLE_ID)) + REPLICATE(' ', 20), 20) + 
    LEFT(RTRIM(LTRIM(CARRIER_ID)) + REPLICATE(' ', 20), 20) AS TransLine
FROM         overdrive.TRANSACTION_TABLE
WHERE     (overdrive.TRANSACTION_TABLE.TRANS_NO = @TransNo))
 
SET @DestinationFile = 'C:\'+@TransNo+'.odrive'
 
EXEC sp_AppendToFile @DestinationFile, @transline
GO


La requête SELECT récupère une chaine comme ceci:
12 V2009-05-08 10:26:58 VEH-123 TR-TEST

qui doit être inscrite dans un fichier texte (par sp_AppendToFile - qui fonctionne bien)

===================

jusqu'à maintenant tout s'exécute bien

jusqu'à ce que je décide d'ajouter un champ dans la requête SELECT qui met un JOIN vers une autre table, dans ce cas, rien n'est inscrit dans le fichier. Mais par contre la requête toute seule s'exécute bien. Et si je fait un OSQL pour exécuter la store Procédure, le fichier contient quelque chose, c'est seulement lorsque je passe par le trigger (aussitôt qu'un record est inséré, rien n'apparait dans le fichier). Et en plus, si j'essaie le trigger sur UPDATE au lieu d'INSERT, ça marche. bizarre ?!?!

Quelqu'un a une idée ?

Désolé pour la requête un peu complexe, c'est une concaténation de champs pour avoir un seul champ retourné dans ma variable @TransLine.

ça fai 2 jours que je suis là dessus sans succès.

=========================

Voici la Stored Procedure avec la requête contenant le join qui me donne rien dans mon fichier lorsqu'exécuté à partir du Trigger INSERT.

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
CREATE PROCEDURE sp_ExportTransInfo @TransNo VarChar(20) AS
 
DECLARE @transline as varchar(255)
DECLARE @DestinationFile as varchar(255)
 
/*SET @TransLine = (SELECT Trans_No from  overdrive.TRANSACTION_TABLE
             WHERE overdrive.TRANSACTION_TABLE.TRANS_NO = @TransNo)*/
 
SET @TransLine = (SELECT     LEFT(RTRIM(LTRIM(overdrive.TRANSACTION_TABLE.TRANS_NO)) + REPLICATE(' ', 10), 10) + LEFT(overdrive.TRANSACTION_TABLE.STATUS, 1) 
                      + LEFT(ISNULL(CONVERT(varchar(19), overdrive.TRANSACTION_TABLE.TRANSACTION_START_DATE, 120), REPLICATE(' ', 19)), 19) 
                      + LEFT(ISNULL(CONVERT(varchar(19), overdrive.TRANSACTION_TABLE.TRANSACTION_COMPLETE_DATE, 120), REPLICATE(' ', 19)), 19) 
                      + LEFT(RTRIM(LTRIM(overdrive.TRANSACTION_TABLE.VEHICLE_ID)) + REPLICATE(' ', 20), 20) 
                      + LEFT(RTRIM(LTRIM(overdrive.TRANSACTION_TABLE.CARRIER_ID)) + REPLICATE(' ', 20), 20) 
                      + overdrive.TRANSACTION_DETAIL.PRODUCT_ID AS TransLine
FROM         overdrive.TRANSACTION_TABLE INNER JOIN
                      overdrive.TRANSACTION_DETAIL ON overdrive.TRANSACTION_TABLE.TRANS_NO = overdrive.TRANSACTION_DETAIL.TRANS_NO
WHERE     (overdrive.TRANSACTION_TABLE.TRANS_NO = @TransNo))
 
SET @DestinationFile = 'C:\'+@TransNo+'.odrive'
 
EXEC sp_AppendToFile @DestinationFile, @transline
GO
Merci !