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

INSERT INTO YoutubeVideo(ProductID,YoutubeUrl,YoutubeImage,DATASET)VALUES(@ProductID,@YoutubeUrl,@YoutubeImage,'DAT')
RETURN

在这里我需要检查ProductId是否相同?如果ProductId相同则更新否则插入。>>>??

4

5 回答 5

1
IF NOT EXISTS(SELECT TOP 1 ProductID FROM YoutubeVideo WHERE ProductID=@ProductID) BEGIN
    --INSERT HERE
END
ELSE BEGIN
    --UPDATE HERE
END
于 2013-10-10T08:59:16.097 回答
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
于 2013-10-10T09:00:03.993 回答
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
于 2013-10-10T09:08:48.130 回答
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

END

如果您想检查记录是否插入,那么您可以取出一个参数并检查记录是否插入。

于 2013-10-10T09:12:26.393 回答
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
于 2013-10-10T09:55:37.040 回答