从SQL Server中的触发器发送电子邮件,具有多个表

时间:2019-01-19 14:38:07

标签: sql sql-server select triggers declare

CREATE TABLE Encomenda
(
    IdEncomenda INT NOT NULL,
    NumEcomenda VARCHAR(100) NOT NULL,
    QTDEncomenda DECIMAL(10,2) NOT NULL,
    BonusEncomenda DECIMAL(10,2) NOT NULL,
    IdDistribuidor INT NOT NULL,
    IdVisita INT NOT NULL,
    CONSTRAINT [PK_Encomenda_IdEncomenda] PRIMARY KEY (IdEncomenda)
)

CREATE TABLE Entrega
(
    IdEntrega INT NOT NULL,
    DataEntrega DATETIME NOT NULL,
    IdEncomenda VARCHAR(100) NOT NULL,
    IdProduto INT NOT NULL,
    CONSTRAINT [PK_Entrega_IdEntrega] PRIMARY KEY (IdEntrega)
)

CREATE TABLE Visita
(
    IdVisita INT NOT NULL,
    DataVisita DATETIME ,
    IdCliente INT NOT NULL,
    IdVendedor VARCHAR(255) NOT NULL,
    CONSTRAINT [PK_Visita_IdVisita] PRIMARY KEY (IdVisita)
)

ALTER TRIGGER [dbo].[Encomenda_Insert]
ON [dbo].[Encomenda]
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @IdEncomenda INT, 
            @NumEcomenda VARCHAR(100),
            @DataEntrega DATETIME

    SELECT TOP 1 
        @IdEncomenda = a.IdEncomenda, 
        @NumEcomenda = NumEcomenda, 
        @DataEntrega = [DataEntrega]
    FROM 
        inserted AS a
    INNER JOIN  
        [dbo].[Entrega] AS b ON a.[IdEncomenda] = b.[IdEncomenda] 
    INNER JOIN 
        [dbo].[Visita] AS c ON a.[IdVisita] = c.[IdVisita]

    DECLARE @BigBody VARCHAR(500) = CAST(@IdEncomenda AS VARCHAR(100)) + ' ' + CAST(@NumEcomenda AS VARCHAR(100)) + ' ' + CAST(@DataEntrega AS VARCHAR(100))
       EXEC msdb.dbo.sp_send_dbmail
            @profile_name = 'Dc'
           ,@recipients = 'danny17kx@gmail.com'
           ,@subject = 'A sua encomenda foi processada e aceite.'
           ,@body = @BigBody
           ,@importance ='HIGH'
           ,@body_format='HTML'
END

收到电子邮件后,给我发送错误的值或根本没有值。

我不知道这是怎么回事。如果您还有其他方法可以这样做

0 个答案:

没有答案