C# 如何调用merge
如题:这个功能在同步录入时很好,省去我每次录入信息都要先查表验证是更新还是删除还是插入?虽然后台仍会执行,但是编程时代码会简洁的多。
但是我不知道如何在C#等程序中调用这种功能,直接输入merge,还是写成存储过程,执行存储过程呢。
------解决方案--------------------写成存储过程吧,直接调用存储过程即可
merge语法请参考联机帮助
示例 MERGE 在单个语句中对表执行 UPDATE 和 DELETE 操作
可以根据 SalesOrderDetail 表中已处理的订单,每天使用 MERGE 更新 AdventureWorks 示例数据库中的 ProductInventory 表。以下 MERGE 语句将 ProductInventory 表的 Quantity 列减去 SalesOrderDetail 表中每个产品每天所下订单的数量,以此对该列进行更新。如果某种产品的订单数导致该产品的库存下降为 0,则会从 ProductInventory 表中删除与该产品对应的行。
USE AdventureWorks;
GO
IF OBJECT_ID (N'Production.usp_UpdateInventory', N'P') IS NOT NULL DROP PROCEDURE Production.usp_UpdateInventory;
GO
CREATE PROCEDURE Production.usp_UpdateInventory
@OrderDate datetime
AS
MERGE Production.ProductInventory AS target
USING (SELECT ProductID, SUM(OrderQty) FROM Sales.SalesOrderDetail AS sod
JOIN Sales.SalesOrderHeader AS soh
ON sod.SalesOrderID = soh.SalesOrderID
AND soh.OrderDate = @OrderDate
GROUP BY ProductID) AS source (ProductID, OrderQty)
ON (target.ProductID = source.ProductID)
WHEN MATCHED AND target.Quantity - source.OrderQty <= 0
THEN DELETE
WHEN MATCHED
THEN UPDATE SET target.Quantity = target.Quantity - source.OrderQty,
target.ModifiedDate = GETDATE()
OUTPUT $action, Inserted.ProductID, Inserted.Quantity, Inserted.ModifiedDate, Deleted.ProductID,
Deleted.Quantity, Deleted.ModifiedDate;
GO
EXECUTE Production.usp_UpdateInventory '20030501'