簡體   English   中英

SQL插入,使用合並存儲過程更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM