我有一个存储过程将值插入到table.Here我需要检查insert中的值是否已经在表中。我可以在我的存储过程中检查这个。这是我的存储过程。
USE [Databasse_sync]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[kt_getyoutubevideo]
@ProductID nvarchar(200),
@YoutubeUrl nvarchar(200),
@YoutubeImage nvarchar(200)
AS
INSERT INTO YoutubeVideo(ProductID,YoutubeUrl,YoutubeImage,DATASET)VALUES(@ProductID,@YoutubeUrl,@YoutubeImage,'DAT')
RETURN
这里我需要检查ProducId是否相同?如果ProductId相同则更新否则插入。>>> ??
答案 0 :(得分:1)
IF NOT EXISTS(SELECT TOP 1 ProductID FROM YoutubeVideo WHERE ProductID=@ProductID) BEGIN
--INSERT HERE
END
ELSE BEGIN
--UPDATE HERE
END
答案 1 :(得分:1)
DECLARE @EXISTS BIT
SELECT @EXISTS = 1
WHERE EXISTS
(SELECT ID FROM YouTubeVideo
WHERE ID = @ProductID
AND YoutubeUrl = @YoutubeUrl)
IF @Exists = 1
BEGIN
-- Update
END
ELSE
BEGIN
-- INSERT
END
答案 2 :(得分:1)
USE [Databasse_sync]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[kt_getyoutubevideo]
@ProductID nvarchar(200),
@YoutubeUrl nvarchar(200),
@YoutubeImage nvarchar(200)
AS
MERGE [YoutubeVideo] AS Y
USING (SELECT @ProductID,@YoutubeUrl, @YoutubeImage) AS SourceRow (ProductID,YoutubeUrl,YoutubeImage)
ON Y.[ProductID] = SourceRow.ProductID
WHEN MATCHED THEN
UPDATE SET
Y.[ProductID] = SourceRow.ProductID
,Y.[YoutubeUrl] = SourceRow.YoutubeUrl
,Y.[YoutubeImage] = SourceRow.YoutubeImage
WHEN NOT MATCHED THEN
INSERT (ProductID,YoutubeUrl, YoutubeImage, DATASET)
VALUES (SourceRow.ProductID,SourceRow.YoutubeUrl, SourceRow.YoutubeImage,'DAT');
RETURN
答案 3 :(得分:1)
@Arun
ALTER PROCEDURE [dbo].[kt_getyoutubevideo]
@ProductID nvarchar(200),
@YoutubeUrl nvarchar(200),
@YoutubeImage nvarchar(200)
AS
BEGIN
DECLARE @counter INT
@counter=SELECT COUNT(ProductID) FROM YoutubeVideo WHERE ProductID=@ProductID
IF(@counter = 0)
BEGIN
INSERT INTO YoutubeVideo(ProductID,YoutubeUrl,YoutubeImage,DATASET)VALUES(@ProductID,@YoutubeUrl,@YoutubeImage,'DAT')
END
END
如果你想检查记录是否被插入,那么你可以拿出一个参数并且chek recored是否被插入。
答案 4 :(得分:1)
试试这个:
ALTER PROCEDURE [dbo].[kt_getyoutubevideo]
@ProductID nvarchar(200),
@YoutubeUrl nvarchar(200),
@YoutubeImage nvarchar(200)
AS BEGIN
DECLARE @counter int
@counter = SELECT count(ProductID) FROM YoutubeVideo WHERE ProductID=@ProductID
IF(@counter = 0)
BEGIN
INSERT INTO YoutubeVideo(ProductID,YoutubeUrl,YoutubeImage,DATASET)VALUES(@ProductID,@YoutubeUrl,@YoutubeImage,'DAT')
End
ELSE
begin
UPDATE SET
ProductID = @ProductID
,YoutubeUrl = @YoutubeUrl
,YoutubeImage = @YoutubeImage
END END