[英]SQL Insert ,Update using Merge Store Procedure
我需要對SQL數據庫中的目標表進行批量Insert
和/或Update
。 我已經嘗試過合並存儲過程。 在目標表中,我有一個組合鍵。
插入時,我需要為(鍵的)第一個字段生成模式。 我嘗試了一個用戶定義的函數,該函數返回對於每個行都是唯一的模式鍵。
我的問題是,如何將該函數合並到查詢中,該查詢將自動生成鍵並為每個記錄插入相應的字段?
TargetTable是數據庫中的目標表,它有兩列Key2(int)
Key1(Bigint)
和Key2(int)
。 再一次,這是一個復合鍵。
注意:我只想為第一個字段/列生成密鑰。
這是我的存儲過程:
Merge Targettable as T
Using SourceTable as s
ON s.Key1 = T.Key1 and
s.Key2=T.Key2
WHEN MATCHED THEN UPDATE
SET T.UserName = S.UserName
WHEN NOT MATCHED THEN
INSERT (Key1, Key2, UserName)
VALUES (dbo.UserDefiendFunction(@parama1),Key2,userName)
UserDefinedFunction
返回我想要的模式。 這是我的用戶定義函數:
Create function [dbo].[UserDefinedFunction] (
@Param1 int)
returns BIGINT
AS Begin
DECLARE @ResultVar BIGINT
SET @ResultVar=CONVERT(BIGINT, (SELECT Cast(@Param1 AS VARCHAR(10))
+ '' + Format((SELECT Count(userName)+1 FROM [dbo].[TableName]), '0')) )
RETURN @ResultVar
END
這個你能幫我嗎。 提前致謝。
IF EXISTS (SELECT * FROM Table1 join table 2 on Column1='SomeValue')
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
insert into ods..Table1 (Columname)
select [DatabaseName].[dbo].[UserDefinedFunction] (@paramater) as ColumnName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.