尝试在SQL Server中创建一个触发器,用于转换和插入xml字符串

时间:2015-09-28 10:58:12

标签: sql sql-server xml sql-server-2005

创建了此触发器

它成功完成并进入正确的表,但是当它在表中插入所有表时它插入到表中时,触发器的长消息部分具有" NULL"在里面。

我经常不看SQL。将数据转换为XML字符串的脚本的实际部分可以工作并生成一个字符串。但是当它处于触发状态时,它不会填充任何东西。

///////////////////////////////////////////

USE [SysproCompanyP]
GO
/****** Object:  Trigger [dbo].[trig_DNIP]    Script Date: 28/09/2015 11:25:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


--=======================================
-- Author       : Thomas Mullins
-- Create date  : 02/09/2015
-- Description  : Email event on a dispatch note being printed
-- Update
-- Update
--=======================================

ALTER TRIGGER [dbo].[trig_DNIP]
      ON [dbo].[MdnMaster]
      AFTER INSERT
AS 
BEGIN 

DECLARE @ConstCompany AS CHAR(1)
DECLARE @SourceCompanyFull AS CHAR(40)

DECLARE @DispatchNote AS CHAR(15)
DECLARE @SalesOrder AS CHAR(6)
DECLARE @CustomerName AS CHAR(30)
DECLARE @Customer AS CHAR(7)
DECLARE @var_LongMessage AS CHAR (255)



SET @SourceCompanyFull = DB_NAME()
SET @ConstCompany = UPPER(RIGHT(RTRIM(@SourceCompanyFull),1))

IF @ConstCompany = 'S'
BEGIN 
   SET @ConstCompany = '0'
END


SELECT 
    @DispatchNote = RTRIM(DispatchNote), 
    @SalesOrder = RTRIM(SalesOrder),
    @CustomerName = RTRIM(CustomerName), 
    @Customer = RTRIM(Customer)
FROM INSERTED 


SET NOCOUNT ON; 

IF @Customer in ('CN01PIO', 'CN01WUH') --AND datepart(yyyy, @CreationDate) = datepart(yyyy, getdate() and datepart(mm, @CreationDate = datepart(mm, @CreationDate) = datepart (mm,getdate()) and datepart(dd, @CreationDate) = datepart(dd, getdate()
BEGIN 

    SET @var_LongMessage = (SELECT (STUFF((
               SELECT ',  ' + RTRIM(WRL.StockCode) + ' ' + RTRIM(WRL.Job) + '     '
               FROM SysproCompanyP.dbo.MdnDetailLot (nolock) AS MDL 
               LEFT OUTER JOIN SysproCompanyP.dbo.WipReservedLots (nolock) AS WRL on WRL.Lot = MDL.Lot 
               WHERE MDL.DispatchNote = RTRIM(@DispatchNote)
               GROUP BY WRL.StockCode, WRL.Job 
               FOR XML PATH('')
               ), 1, 2, '')
            ))

INSERT INTO [SysproCompanyC].[dbo].[EmailEvents]
       ([SourceCompany]         ,[SourceCompanyFull]    ,[ParentValue]          ,[CFFName]          ,[CFFData]  ,[TxtFileExtension]  ,[DateEntered]    ,[LongMessage])
VALUES 
       (@ConstCompany          ,@SourceCompanyFull    ,@SalesOrder            ,@Customer      ,@DispatchNote    ,'DNIP'                ,GETDATE()       ,@var_LongMessage)

INSERT INTO [Piolax_Logging].[dbo].[EventLogging]   ([Company],[EventType],[Source],[Annotation],[NumberOfRecords],[DateTime])
        VALUES (@ConstCompany           ,'INFO'           ,'[trig_DNIP]'           ,'Dispatch Note Printed  '  + @DispatchNote + @ConstCompany + @SourceCompanyFull + @SalesOrder  + @Customer + 'DNIP' + HOST_NAME(),1           ,GETDATE())
END 




END

如果有人能提供我的任何信息,那就太好了,谢谢。

0 个答案:

没有答案