代码之家  ›  专栏  ›  技术社区  ›  unknown

触发器内的Service broker调用链接服务器存储过程,并将排队的数据作为参数

  •  0
  • unknown  · 技术社区  · 6 年前

    由于公司政策,特别是数据库管理员的建议,我不能使用触发器调用任何复杂的逻辑(在我的情况下,调用链接服务器存储过程)。

    我被建议实现ServiceBroker体系结构,所以我的问题是这是否可能,以及如何将其与下面的逻辑结合起来, 将数据存储在队列中并将其传递到存储过程中。

    我可能在这里缺少一些常识,但这是由于我对服务经纪人缺乏了解和完成时间。

     CREATE TRIGGER [dbo].[BenRef_UPDATEtrg]
       ON [dbo].[ITRAEN]
     AFTER UPDATE
    AS
    
    SET ANSI_NULLS ON
    SET ANSI_WARNINGS ON
    
     BEGIN
    
       IF UPDATE(poz2) 
    
        BEGIN 
    
    
     DECLARE @benRefNum VARCHAR(30);
     DECLARE @partija VARCHAR(30);
     DECLARE @unikum VARCHAR(30);
    
    
    
        DECLARE @storeBenRef as table
        (
            BeneficiaryRef VARCHAR(30), 
            Partija VARCHAR(30) collate Serbian_Latin_100_CI_AS, 
            Datum DATETIME,
            Unikum VARCHAR(30)
        )
    
    
    -- Trigger logic
    INSERT INTO @storeBenRef ( BeneficiaryRef, Partija, Datum, Unikum) 
      SELECT i.poz2, i.PARTIJA,CONVERT(DATETIME,i.DOTVORANJE,121) AS datum,i.Unikum
           FROM inserted i
             INNER JOIN deleted d 
                 ON i.PARTIJA = d.PARTIJA
    
    
        SET @benRefNum = ( SELECT BeneficiaryRef FROM @storeBenRef);
        SET @partija = ( SELECT partija FROM @storeBenRef);
        SET @unikum = (SELECT Unikum FROM @storeBenRef);
    
    
         /*
       Linked server procedure using retrieved data as parameters 
         */
    
        EXEC [EXPSRV1].[OPR].[dbo].[BenRefUpdate] @BenRefNum = @benRefNum, @Party = @partija,@Arrangement_unikum = @unikum;
    
    
    END
    
    0 回复  |  直到 6 年前