[英]Declaring and setting variable in upsert SQL Server query no
I have a problem with declaring and setting variable in my upsert sql query. 我在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();
}
}
}
I'm getting a null values in the TripTariffTransactionID
column in the TrippingTariffTransactionAuditTrail
table. 我在
TrippingTariffTransactionAuditTrail
表的TripTariffTransactionID
列中获得了空值。
What should I change on my query? 我应该对查询进行哪些更改? Thanks in advance
提前致谢
I solved my problem using this approach 我用这种方法解决了我的问题
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)
BEGIN
UPDATE [dbo].[TrippingTariffTransaction]
SET
Price = @Price
WHERE Id = @TripTariffTransactionID
END
ELSE
BEGIN
INSERT INTO [dbo].[TrippingTariffTransaction]
(TrippingTariffId
,Trip
,Price
,TrippingDistanceId
,IsActive)
VALUES
(@TrippingTariffId
,@Trip
,@Price
,@TrippingDistanceId
,@IsActive);
SET @TripTariffTransactionID = (SELECT CAST(SCOPE_IDENTITY() as BIGINT))
END;";
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();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.