У меня проблема с объявлением и установкой переменной в моем запросе sql upsert.
public void UpdateTrippingTariff(List<TrippingTariffTransaction> obj)
{
using (IDbConnection connection = ConnectionManager.Connection)
{
string qry = "";
foreach (var details in obj.ToList())
{
qry = "DECLARE @TripTariffTransactionID as BIGINT;";
qry += "SET @TripTariffTransactionID = (SELECT Id FROM [dbo].[TrippingTariffTransaction] WHERE Trip = @Trip AND TrippingDistanceId = @TrippingDistanceId AND TrippingTariffId = @TrippingTariffId);";
qry += @" IF (@TripTariffTransactionID != 0)
UPDATE [dbo].[TrippingTariffTransaction]
SET Price = @Price
WHERE Id = @TripTariffTransactionID
ELSE
INSERT INTO [dbo].[TrippingTariffTransaction]
(TrippingTariffId, Trip, Price, TrippingDistanceId, IsActive)
VALUES (@TrippingTariffId, @Trip, @Price, @TrippingDistanceId, @IsActive);
SET @TripTariffTransactionID = (SELECT CAST(SCOPE_IDENTITY() as BIGINT));";
qry += @"INSERT INTO [dbo].[TrippingTariffTransactionAuditTrail]
(LogDatetime, MasterlistId, ComputerName, TrippingTariffTransactionID, Activity)
VALUES (GETDATE(), @MasterlistId, @ComputerName, @TripTariffTransactionID, @Activity)";
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
connection.Execute(qry, details);
connection.Close();
}
}
}
Я получаю нулевые значения в столбце TripTariffTransactionID
в таблице TrippingTariffTransactionAuditTrail
.
Что я должен изменить в своем запросе? Заранее спасибо