求的sql server2005的存储过程
需求是,A表和B表无连接关系
存储过程接受3个参数然后根据3个参数找到A表中相应的数据,在将A表中的数据插入到B表中去,表结构大体相同但有几个列不同。然后返回插入数据的条数。
求解。
需求是,A表和B表无连接关系
存储过程接受3个参数然后根据3个参数找到A表中相应的数据,在将A表中的数据插入到B表中去,表结构大体相同但有几个列不同。然后返回插入数据的条数。
求解。
调试欢乐多
@参数1 varchar(10),
@参数2 varchar(10),
@参数3 varchar(10),
@out int output
as
insert b(colist) select colist from a where col1=@参数1 --and ....
set @out=@@rowcount
/*
1.MERGE 语句在 SQL Server 2008 中,可以使用 MERGE 语句在一条语句中根据与源表联接的结果对目标表执行 INSERT、UPDATE 或 DELETE 操作。如:使用一个语句有条件地在单个目标表中插入或更新行,如果目标表中存在相应行,则更新一个或多个列;否则,会将数据插入新行。使用该语句还可以同步两个表,根据与源数据的差别在目标表中插入、更新或删除行。MERGE 语法包括如下五个主要子句:MERGE 子句用于指定作为插入、更新或删除操作目标的表或视图。USING 子句用于指定要与目标联接的数据源。ON 子句用于指定决定目标与源的匹配位置的联接条件。WHEN 子句用于根据 ON 子句的结果指定要执行的操作。OUTPUT 子句针对更新、插入或删除的目标对象中的每一行返回一行。
*/
IF OBJECT_ID (N'dbo.Purchases', N'U') IS NOT NULL DROP TABLE dbo.Purchases; GOCREATE TABLE dbo.Purchases (ProductID int, CustomerID int, PurchaseDate datetime, CONSTRAINT PK_PurchProdID PRIMARY KEY(ProductID,CustomerID)); GOINSERT INTO dbo.Purchases VALUES(707, 11794, '20060821'),(707, 15160, '20060825'),(708, 18529, '20060821'),(712, 19072, '20060821'),(870, 15160, '20060823'),(870, 11927, '20060824'),(870, 18749, '20060825'); GOIF OBJECT_ID (N'dbo.FactBuyingHabits', N'U') IS NOT NULL DROP TABLE dbo.FactBuyingHabits; GOCREATE TABLE dbo.FactBuyingHabits (ProductID int, CustomerID int, LastPurchaseDate datetime, CONSTRAINT PK_FactProdID PRIMARY KEY(ProductID,CustomerID)); GOINSERT INTO dbo.FactBuyingHabits VALUES(707, 11794, '20060814'),(707, 18178, '20060818'),(864, 14114, '20060818'),(870, 17151, '20060818'),(870, 15160, '20060817'),(871, 21717, '20060817'),(871, 21163, '20060815'),(871, 13350, '20060815'),(873, 23381, '20060815'); GO
SELECT * FROM Purchases
SELECT * FROM FactBuyingHabits
MERGE dbo.FactBuyingHabits AS TargetUSING (SELECT CustomerID, ProductID, PurchaseDate FROM dbo.Purchases) AS SourceON (Target.ProductID = Source.ProductID AND Target.CustomerID = Source.CustomerID)WHEN MATCHED THENUPDATE SET Target.LastPurchaseDate = Source.PurchaseDateWHEN NOT MATCHED BY TARGET THENINSERT (CustomerID, ProductID, LastPurchaseDate)VALUES (Source.CustomerID, Source.ProductID, Source.PurchaseDate)OUTPUT $action, Inserted.*, Deleted.*;SELECT * FROM FactBuyingHabits