【发布时间】:2019-02-02 13:26:37
【问题描述】:
我在 upsert sql 查询中声明和设置变量时遇到问题。
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();
}
}
}
我在TrippingTariffTransactionAuditTrail 表的TripTariffTransactionID 列中得到一个空值。
我应该对我的查询进行哪些更改?提前致谢
【问题讨论】:
-
如何设置命令参数?
-
@ParrishHusband 请再检查一次先生
-
@TripTariffTransactionID != 0!=@TripTariffTransactionID IS NOT NULL
标签: c# sql-server upsert