我正在寻找一些建议如何优化几个sql存储过程.
使用第一个查询我做插入,与第二个我正在更新,如果数据存在.
我想做的是将两个存储过程合并在一起,其中查询将检查数据是否存在而不是更新,否则插入新行.
这是我现在在这里
使用第一个查询我做插入,与第二个我正在更新,如果数据存在.
我想做的是将两个存储过程合并在一起,其中查询将检查数据是否存在而不是更新,否则插入新行.
这是我现在在这里
更新SP:
ALTER PROCEDURE [dbo].[UpdateStep1](@UserId nvarchar(50),@First_Name nvarchar(50),@Last_Name nvarchar(50),@TitlePosition nvarchar(30)) AS BEGIN UPDATE Company_Information SET First_Name = @First_Name,Last_Name = @Last_Name,Title_Position=@TitlePosition,WHERE UserId = @UserId END
插入SP:
ALTER PROCEDURE [dbo].[InsertStep1](@UserId nvarchar(50),@TitlePosition nvarchar(30)) AS BEGIN INSERT INTO Company_Information(UserId,First_Name,Last_Name,Title_Position) VALUES (@UserId,@First_Name,@Last_Name,@TitlePosition) END
所以,我想将两个SP合并在一起,并且SP检查是否已经存在UserId的数据而不是update,否则插入一个新行.
有人可以帮我这个吗
感谢和节日快乐大家,Laziale
解决方法
MERGE Statement?
CREATE PROCEDURE [dbo].[MERGEStep1](@UserId nvarchar(50),@TitlePosition nvarchar(30)) AS BEGIN MERGE Company_Information WITH(HOLDLOCK) AS T USING(SELECT 1 S) S ON T.UserId = @UserId WHEN MATCHED THEN UPDATE SET First_Name = @First_Name,Title_Position=@TitlePosition WHEN NOT MATCHED THEN INSERT (UserId,Title_Position) VALUES(@UserId,@TitlePosition); END