使用不带 null 的存储过程更新 table

Update table with stored procedure without null

我尝试实施主要目标是将数据存储到新的单独 table.First 我创建 table 我想用数据填充的程序

CREATE TABLE dbo.CustomerReportLogs (
    ID int IDENTITY (1,1) NOT NULL,
    CustomerFullName NVARCHAR(100)  NULL,
    LocationName NVARCHAR(100)  NULL,
    Amount decimal (18,2)  NULL,
    Currency NVARCHAR (20) NULL,
    EmployeeId int NULL,
    ValidFrom date NULL,
    ValidTo date  NULL,
    CONSTRAINT PK_ID_CustomerReportLogs PRIMARY KEY CLUSTERED (
    ID ASC
    ))
    GO

因此下一步是如何使用存储过程填充此 table。我为了做到这一点我写了这行代码:

CREATE OR ALTER PROCEDURE dbo.procedure2 (@CustomerId int, @validFrom date, @ValidTo date,@EmployeeID int)
AS
BEGIN
SELECT  CONCAT(c.FirstName, ' ', c.LastName) AS CustomerFullName, lo.Name as LocationName,acd.Amount as Amount,cu.Name as Currency,acc.EmployeeId,@validFrom as ValidFrom,@ValidTo as ValidTo
FROM dbo.Customer as c
INNER JOIN dbo.Account AS acc ON acc.CurrencyId=c.Id
INNER JOIN dbo.AccountDetails AS acd ON acd.AccountId=acc.Id
INNER JOIN dbo.Currency AS cu ON cu.id=acc.CurrencyId
INNER JOIN dbo.Location as lo ON lo.Id=acd.LocationId
INNER JOIN dbo.Employee AS emp ON emp.ID=acc.EmployeeId
WHERE acc.CustomerId=@CustomerId and acd.TransactionDate between @validFrom and @ValidTo and acc.EmployeeId=@EmployeeID
DECLARE @CustomerFullName NVARCHAR(100) 
DECLARE @LocationName NVARCHAR(100)
DECLARE @Amount decimal (18,2) 
DECLARE @Currency NVARCHAR (20)
INSERT INTO dbo.CustomerReportLogs(CustomerFullName,LocationName,Amount,Currency,EmployeeId,ValidFrom,ValidTo)
VALUES (@CustomerFullName,@LocationName,@Amount,@Currency,@EmployeeId,@ValidFrom,@ValidTo)
SELECT @CustomerFullName as CustomerFullName,@LocationName AS LocationName,@Amount AS Amount,@Currency as Currency,
@EmployeeId as EmployeeId,@ValidFrom as ValidFrom ,@ValidTo as ValidTo
END
GO

上面的代码创建了存储过程,但现在出现了新问题,即当我尝试首先执行此命令时

EXEC dbo.procedure2  @CustomerId=8,@validFrom='2019.01.25', @ValidTo='2019.03.01', @EmployeeID=8

所以这个过程无法正确更新 dbo.CustomerReportLogs 所以我得到了一些 null 结果和一些 values.Output 你可以在下面的图片中看到: [![在此处输入图片描述][1]][1]

那么谁能帮我如何正确更新此 table 而不是使用 null

CREATE  OR ALTER PROCEDURE dbo.procedure2 (
        @CustomerId INT
        ,@validFrom DATE
        ,@ValidTo DATE
        ,@EmployeeID INT
        )
    AS
    BEGIN
    
        INSERT INTO dbo.CustomerReportLogs (
            CustomerFullName
            ,LocationName
            ,Amount
            ,Currency
            ,EmployeeId
            ,ValidFrom
            ,ValidTo
            )
        OUTPUT INSERTED.[CustomerFullName],INSERTED.[LocationName],INSERTED.[Amount],INSERTED.[Currency],INSERTED.[EmployeeId],INSERTED.[ValidFrom] ,INSERTED.[ValidTo]
    
        SELECT CONCAT (c.FirstName,' ',c.LastName) AS CustomerFullName
            ,lo.Name AS LocationName
            ,acd.Amount AS Amount
            ,cu.Name AS Currency
            ,acc.EmployeeId
            ,@validFrom AS ValidFrom
            ,@ValidTo AS ValidTo
        FROM dbo.Customer AS c
        INNER JOIN dbo.Account AS acc ON acc.CurrencyId = c.Id
        INNER JOIN dbo.AccountDetails AS acd ON acd.AccountId = acc.Id
        INNER JOIN dbo.Currency AS cu ON cu.id = acc.CurrencyId
        INNER JOIN dbo.Location AS lo ON lo.Id = acd.LocationId
        INNER JOIN dbo.Employee AS emp ON emp.ID = acc.EmployeeId
        WHERE acc.CustomerId = @CustomerId
            AND acd.TransactionDate BETWEEN @validFrom
                AND @ValidTo
            AND acc.EmployeeId = @EmployeeID
    
        
    END