首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

C# 怎么调用merge

2013-11-01 
C# 如何调用merge如题:这个功能在同步录入时很好,省去我每次录入信息都要先查表验证是更新还是删除还是插

C# 如何调用merge
如题:这个功能在同步录入时很好,省去我每次录入信息都要先查表验证是更新还是删除还是插入?虽然后台仍会执行,但是编程时代码会简洁的多。
但是我不知道如何在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'

热点排行